2015-07-27 5 views
0

я следующий классСоздание вложенного JSON для входящего объекта

public class Foo { 
    private String a; 
    private String b; 
    private String c; 
    private Bar d; 
} 

Для этого, я хочу, чтобы генерировать следующие JSON

{ 
    "values": 
    { 
     "value_id":"<value_of_field_a>" 
    }, 
    "bar": 
    { 
     "id":"<value_of_field_b>", 
     "object": 
     { 
      "<value_of_bar_object_d>" 
     } 
    } 
    "seq":"<value_of_field_c>" 
} 

Да, я могу создать POJO, который будет имитировать эту иерархию, кроме пример, который я опубликовал здесь, намного проще, чем фактический объект. есть способ я могу генерировать пользовательские иерархии для JSON с помощью Джексона

ответ

2

Написать собственный сериалайзер:

public class FooSerializer extends JsonSerializer<Foo> { 

    @Override 
    public void serialize(Foo value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException { 
     jgen.writeStartObject(); 
     jgen.writeObjectFieldStart("values"); 
     jgen.writeStringField("value_id", value.getA()); 
     jgen.writeEndObject(); 
     // TODO: serialize the other fields 
     jgen.writeEndObject(); 
    } 
} 

Регистрация настраиваемое сериалайзер по аннотирования Foo с @JsonSerialize:

@JsonSerialize(using = FooSerializer.class) 
public class Foo { 
... 
}