现在有一个JSON字符串:{"aaa":[["bbb",1],["ccc",-1]]}因为中间的["bbb",1]没有办法映射成Bean,所以这样的JSON字符串如何用Jackson解析?最好用Data-bind的方式解析,用JSON Tree的方式已经了解了。JavaJacksonJSON
解决方案 »
- jsp 连接sql server2000,不知道出了什么问题,希望高手指点迷津
- MyEclipse 5.5.1 GA 中搭建SSH框架时包冲突的问题,高人请进!
- 是不是流里的东西都是序列化的,不序列化的对象能放到流里吗..?
- 连接DB2数据库的问题
- oracle 分页sql问题
- Tomcat Maven
- Object[][] 转 List 的问题?
- jax-ws 中取得 SOAPHandler MessageContext 传递给调用的方法
- 100分求救
- 求教:iis_srun.dll 去哪里找/下载??
- <s:iterator> list集合值赋值到 <s:textfield> 在线等答案
- struts1.0乱码(不安全字符)
private ArrayList<B> aaa;
public ArrayList<B> getAaa(){
return aaa;
}
public void setAaa(ArrayList<B> aaa){
this.aaa=aaa;
}
}
Bean B设计:public class B{
private String str;
private Integer ind; // 标记使Jackson使用构造函数建立B对象而不是setter
@JsonCreator
public B(ArrayList<Object> bArr){
if(bArr.get(0) instanceof String){
this.str=(String)bArr.get(0);
}
if(bArr.get(1) instanceof Integer){
this.ind=(Integer)bArr.get(1);
}
}
public String getStr(){
return this.str;
}
public void setStr(String str){
this.str=str;
}
public Integer getInd(){
return this.ind;
}
public void setInd(Integer ind){
this.ind=ind;
}
// 标记使Jackson使用该方法获得对象用于串行化的值
// 标记后,Jackson忽略以上getter
@JsonValue(value=true)
public ArrayList<Object> getB(){
return new ArrayList<Object>(){
{
add(getStr());
add(getInd());
}
};
}
}
主程序片段:// 读入解析
ObjectMapper objMapper=new ObjectMapper();
ArrayList<A> as=objMapper.readValue(jsonString,new TypeReference<ArrayList<A>>(){});
// 输出
objMapper.setSerializationInclusion(JsonSerialize.Inclusion.NON_NULL);
ObjectWriter ow=objectMapper.writer(new DefaultPrettyPrinter());
String outJsonString=ow.writeValueAsString(as);
Jackson的Annotation很多地方都没有提及,用Annotation配合Data-Bind解析Json很方便。
算是一个好的习惯吧~