考虑我有这样的json
片段(更复杂的json的一部分):
"foo": {
"abc": {
"prop1": "blabla11";
"prop2": "blabla12";
"prop3": "blabla13";
},
"bcd": {
"prop1": "blabla21";
"prop2": "blabla22";
"prop3": "blabla23";
},
...
}
即。所有abc
,bcd
等项目都具有相同的内部结构。
是否有任何优雅的方式来对java
结构进行注释,以便通过jackson
将其解析为Foo
类的对象?
注意: foo
不是根结构,所以我无法单独解析它。
public class Foo {
private Map<String, FooItem> items;
...
}
public class FooItem {
private String prop1;
private String prop2;
private String prop3;
...
}
答案 0 :(得分:-1)
定义一个更大的结构,您可以使用它来读取更复杂的JSON。使用@JsonIgnoreProperties
忽略任何未知位。
试试这个:
@JsonIgnoreProperties(ignoreUnknown = true)
public class LargerStructure {
private Foo foo;
public Foo getFoo() {
return foo;
}
public void setFoo(Foo foo) {
this.foo = foo;
}
}
public class App {
public static void main(String ...args){
File input = new File("largerInput.json");
LargerStructure largerStructure = deserialise(input);
System.out.println(largerStructure.getFoo());
}
public static LargerStructure deserialise(File input){
LargerStructure largerStructure = null;
try {
ObjectMapper mapper = new ObjectMapper();
largerStructure = mapper.readValue(input, LargerStructure.class);
} catch (Exception e) {
e.printStackTrace();
}
return largerStructure;
}
}