如何在Jackson中使用自定义Serializer?
我有两个Java类,我想使用Jackson序列化为JSON:
public class User { public final int id; public final String name; public User(int id, String name) { this.id = id; this.name = name; }}public class Item { public final int id; public final String itemNr; public final User createdBy; public Item(int id, String itemNr, User createdBy) { this.id = id; this.itemNr = itemNr; this.createdBy = createdBy; }}
我想将Item序列化为此JSON:
{"id":7, "itemNr":"TEST", "createdBy":3}
用户序列化只包括id
。我还可以将所有用户对象serilize为JSON,如:
{"id":3, "name": "Jonas", "email": "jonas@example.com"}
所以我想我需要编写一个自定义序列化器Item
并尝试使用它:
public class ItemSerializer extends JsonSerializer<Item> {@Overridepublic 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.user.id); jgen.writeEndObject();}}
我使用Jackson How-to:Custom Serializers中的代码序列化JSON
如何在Jackson中使用自定义Serializer?
但我现在需要和杰克逊一起做,因为Gson不支持接口。
狐的传说
相关分类