使用jackson获取动态属性名称

时间:2015-07-07 13:35:26

标签: java json jackson

我需要创建json,其中对象的结构类似,但可以包含不同的对象名称,即:

    "obj1":{
         "field1":1,
         "field2":2
     }
    "obj2":{
         "field1":4,
         "field2":5
     }
    "obj3":{
         "field1":7,
         "field2":8
     }

如何使用jackson创建dynanic字段名称?这将在运行时根据所做的输入完成

1 个答案:

答案 0 :(得分:2)

你可以参考这个答案:Jackson dynamic property names

基本上您可以使用自定义JsonSerializer

  @JsonProperty("p")
  @JsonSerialize(using = CustomSerializer.class)
  private Object data;

  // ...

public class CustomSerializer extends JsonSerializer<Object> {
  public void serialize(Object value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException {
    jgen.writeStartObject();
    jgen.writeObjectField(value.getClass().getName(), value);
    jgen.writeEndObject();
  }
}