要使用 Jackson 自訂 Java 類別的序列化,可以定義一個擴展 JsonSerializer 的自訂序列化器類別。
1.為專案建立自訂序列化器:
public class ItemSerializer extends JsonSerializer<Item> { @Override public void serialize(Item value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException { jgen.writeStartObject(); jgen.writeNumberField("id", value.id); jgen.writeNumberField("itemNr", value.itemNr); jgen.writeNumberField("createdBy", value.createdBy.id); jgen.writeEndObject(); } }
2.建立自訂序列化模組並註冊序列化器:
ObjectMapper mapper = new ObjectMapper(); SimpleModule simpleModule = new SimpleModule("SimpleModule", new Version(1,0,0,null)); simpleModule.addSerializer(new ItemSerializer()); mapper.registerModule(simpleModule);
3.序列化。 valid valid handlerType()) 指示序列化器未指定它處理的類型。
要解決此問題,請確保 JsonSerializer 實作正確定義其handledType() 方法。StringWriter writer = new StringWriter(); mapper.writeValue(writer, myItem);
另一種方法是使用@ 註解欄位JsonSerialize(using = CustomSerializer.class) 使用特定的
範例:自訂日期序列化
這允許對序列化和反序列化進行詳細控制過程。
以上是如何將自訂序列化器與 Jackson 一起使用?的詳細內容。更多資訊請關注PHP中文網其他相關文章!