我试图通过杰克逊将以下json映射到pojo。我有第一部分工作(直到部分)。但是,第二部分我不知道如何映射" section1"也许这里有一个包含的pojo或最佳实践?
json通过休息电话收到:
{
"val1":100,
"val2":2.75,
"junk":[
{
"junk1":36,
"junk2":78
},
{
"junk1":36,
"junk2":78
}
],
"section1":{ // <- There will be another section2, section3,...
"val1":100,
"val2":2.75,
"junk1":[
{
"junk1":36,
"junk2":78
},
{
"junk1":36,
"junk2":78
}
],
"junk2":[
{
"junk1":36,
"junk2":78
},
{
"junk1":36,
"junk2":78
}
]
}
}
POJO的:
public class view
{
private int val1;
private float val2;
private List<Map<String, String> > junk; //<-Ok as I just pass to another class
// How to store "section" ... and want to keep junk1, junk2 same
// placeholder like I have for junk in main section above.
}
答案 0 :(得分:1)
如果每个部分(和每个垃圾片段)的内容在内部具有相同的结构,则使'section'成为另一个类,也是'junk'。
public class view
{
private int val1;
private float val2;
private List<Junk> junk; //<-Ok as I just pass to another class
private Section section1;
private Section section2;
... etc ...
}
public class Section {
private int val1;
private float val2;
private List<Junk> junk; //<-Ok as I just pass to another class
}
public class Junk {
private String junk1;
private Strign junk2;
}
我假设你展示的结构而不是一系列的部分。
另外,地图不是存储两个随机字符串的好地方。但杰克逊会允许它。唯一的例外是如果字段的名称将从'junk1'和'junk2'变化。否则只需使用一个包含两个字符串的类。
答案 1 :(得分:1)
请注意,您可以指出应忽略“垃圾”。有几种方法可以做到;一个是做:
@JsonIgnoreProperties({"junk"})
public class MyClass { ... }
这样做的好处是不需要内存来存储匹配数据;并且它可以加速解析(不是很多,但有些;解析器仍然需要解码JSON以跳过它等)。