Java Jackson包装器反序列化最佳实践
我有以下JSON,我想使用Jackson JSON处理器库()解析它:Java Jackson包装器反序列化最佳实践,java,android,json,jackson,Java,Android,Json,Jackson,我有以下JSON,我想使用Jackson JSON处理器库()解析它: 就最佳实践而言,您建议如何成为最佳方式 解析JSON的简单而快速的形式是创建一个带有注释的bean,然后调用Jackson 有些人喜欢这样: @JsonIgnoreProperties(ignoreUnknown = true) public class YourClass { @JsonProperty("wrapper") public Wrapper wrapper; @JsonIgnoreProperties(i
就最佳实践而言,您建议如何成为最佳方式 解析JSON的简单而快速的形式是创建一个带有注释的bean,然后调用Jackson 有些人喜欢这样:
@JsonIgnoreProperties(ignoreUnknown = true)
public class YourClass {
@JsonProperty("wrapper")
public Wrapper wrapper;
@JsonIgnoreProperties(ignoreUnknown = true)
public static class Wrapper{
@JsonProperty("Items")
public ArrayList<Item> items = new ArrayList<Item>();
}
@JsonIgnoreProperties(ignoreUnknown = true)
public static class Item{
@JsonProperty("name")
public String name;
...
}
....
重用ObjectMapper非常重要,因为实例化它非常昂贵
改进:如果设置此选项,JSON可能会得到改进(bean基于此)
杰克逊?是什么that@MT8这是一个JSON库。他应该阅读手册,而不是在这里问。好的,我使用GSON lib,但我认为使用lib会造成堆问题…解析它directly@Kayaman你能给我指一下正确的链接吗?我如何管理wapper?创建一个包装器类?您真正的问题是什么?遗憾的是,我无法更改JSON结构,我只需要在itAnyway上修改我的代码,修改注释以适应JSON:)
@JsonIgnoreProperties(ignoreUnknown = true)
public class YourClass {
@JsonProperty("wrapper")
public Wrapper wrapper;
@JsonIgnoreProperties(ignoreUnknown = true)
public static class Wrapper{
@JsonProperty("Items")
public ArrayList<Item> items = new ArrayList<Item>();
}
@JsonIgnoreProperties(ignoreUnknown = true)
public static class Item{
@JsonProperty("name")
public String name;
...
}
....
public ObjectMapper mMapper;
...
if (mMapper == null)
mMapper = new ObjectMapper();
YourClass yourClass = (YourClass) mMapper.readValue(stringJSON, YourClas.class);
{
"wrapper":{
"general":{
"value":10
},
"items":[
"item":{
"name":"DOG",
"0":78,
"1":125
"name":"Lucky",
"features":{
"color":"brown",
"sex":"male"
}
},
"item":{
"name":"CAT",
"0":123,
"1":94
"name":"Fluffy",
"features":{
"color":"black",
"sex":"female"
}
}
]
}