我有一个简单的问题,现在让我想方设法。
我想反序化:
[
{ "a": "a", "b": 1 }
{ "a": "b", "b": 2 }
]
进入这个:
@Data
public class MyObject {
private List<BaseType> rootList;
}
我想要这样做的原因是因为我之前只是在扩展ArrayList,但现在我实际上需要一个它需要继承的真正的类,所以我不能再这样做了。我基本上只需要Jackson来填充那个内部属性,而不是我必须包装该类。
是否有注释可以执行此操作?
谢谢!
答案 0 :(得分:1)
如果我的问题是正确的,你想要将json数组反序列化为包含所有json数组项的数组字段的对象。您可以做的一件事是创建自定义构造函数并使用@JsonCreator
对其进行注释。对于序列化,您可以在@JsonValue
列表字段上方使用rootList
。
private static String json = "[{\"a\":\"a\",\"b\":1},{\"a\":\"b\",\"b\":2}]";
@Data
public static class MyObject {
@JsonValue // used during serialization
private List<BaseType> rootList;
@JsonCreator //used during deserialization
public MyObject(List<BaseType> items ) {
this.rootList = items;
}
}
@Data
public static class BaseType {
@JsonProperty
private String a;
@JsonProperty
private int b;
}
public static void main(String[] args) throws Exception {
ObjectMapper mapper = new ObjectMapper();
MyObject value = mapper.readValue(json, MyObject.class);
System.out.println(value);
System.out.println(mapper.writeValueAsString(value));
}