我以前用过Gson,一切正常,但速度太慢。
这是 Json:
"{"Info":[{"par1":3456,"par2":4500,"par3":0,"items":{"parx":2354,"pary":456456,"parz":"worker"}}
,{"par1":34456,"par2":4300,"par3":1,"items":{"parx":5677,"pary":78456,"parz":"member"}},
],"par4":343434,"duplicateItemIdList":null,"errorState":null}"
现在我尝试了 jackson :
代码片段:
ObjectMapper mapper = new ObjectMapper();
Passes mj = mapper.readValue(str, Passes.class);
public class Passes {
public ArrayList<Info> info;
.... }
@JsonIgnoreProperties(ignoreUnknown = true)
class Info {
public String par1 = "";
public String par2 = "";
public String par3 = "";
public String par4 = "";
Items items = new Items();
}
class Items{
public String parx = "";
public String pary = "";
public String parz = "";
}
问题是它没有填充类items
。 parx、pary、parz 等
items
是唯一的问题。其余的工作正常。
我的结构必须正确,因为在 Gson 中我只需要两行就可以完美地工作。
所以我想我必须添加一些东西以便 jackson 识别
最佳答案
请确保您拥有:
- 每个参数的 geters/setter
- 空(或任何)承包商
通过
@JsonIgnoreProperties(ignoreUnknown = true)
public class Passes {
private List<Info> info;
public Passes() {
// TODO Auto-generated constructor stub
}
public List<Info> getInfo() {
return info;
}
public void setInfo(List<Info> info) {
this.info = info;
}
}
信息
@JsonIgnoreProperties(ignoreUnknown = true)
public class Info {
private int par1;
private int par2;
private int par3;
private int par4;
//private Items items;
public Info() {
// TODO Auto-generated constructor stub
}
public int getPar1() {
return par1;
}
public void setPar1(int par1) {
this.par1 = par1;
}
public int getPar2() {
return par2;
}
public void setPar2(int par2) {
this.par2 = par2;
}
public int getPar3() {
return par3;
}
public void setPar3(int par3) {
this.par3 = par3;
}
public int getPar4() {
return par4;
}
public void setPar4(int par4) {
this.par4 = par4;
}
}
项目
public class Items{
private int parx;
private int pary;
private String parz;
public Items() {
// TODO Auto-generated constructor stub
}
public int getParx() {
return parx;
}
public void setParx(int parx) {
this.parx = parx;
}
public int getPary() {
return pary;
}
public void setPary(int pary) {
this.pary = pary;
}
public String getParz() {
return parz;
}
public void setParz(String parz) {
this.parz = parz;
}
}
应该可以
作为旁注:
Gson
在 Jackson
ArrayList
时使用 LinkedLIst
,因此从代码 Gson
无法转换 Passes
类
关于java - 使用 Jackson 1.9 解析 json 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19195146/