如何在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不支持接口。
狐的传说
相关分类