如何在Jackson中使用自定義Serializer?我有兩個(gè)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。我還可以將所有用戶對(duì)象serilize為JSON,如:{"id":3, "name": "Jonas", "email": "jonas@example.com"}所以我想我需要編寫一個(gè)自定義序列化器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?但我現(xiàn)在需要和杰克遜一起做,因?yàn)镚son不支持接口。
如何在Jackson中使用自定義Serializer?
ibeautiful
2019-07-24 19:11:57