如下所示的AA:
String aa="[{'aaa':'111'}"
+",{'dwbh':'01','dwmc':'会议','sjbh':'001','klmyh':'aaa','gsfr':'bbb','dwjb':'ddd'}"
+",{'zsxm':'yyyy','sfzmhm':'220111','yhbh':'001','yhnc':'333','phone':'13353296588','email':'333@111'}]";
我用jackson怎样把他变成对象数组?也就是变成三个不同对象。无论是用LIST还是map都转不了
想转为什么???
JSONArray jsArray = JSONArray.fromObject(aa);
for (int i = 0; i < jsArray.size(); i++) {
JSONObject jsObj = (JSONObject) jsArray.get(i);
Object Obj = JSONObject.toBean(jsObj,Object.class);
}
如果你的Object不同的话,就想办法加判断,然后用不同的Object接收,比如此处get(0),get(1),get(2)不同
这是JSON-LIB的方法,我用的是jackson。
我现在是是用splite处理成数组,感觉不正规,看看,jackson怎样处理
我这样能达到目的:jackson是否有好的办法
String[] sourceStrArray = json.split("},");
int iMax=sourceStrArray.length;
for (int i = 0; i < iMax; i++) {
if (i==0){
sourceStrArray[i]=sourceStrArray[i]+"}]";
} else if (i==iMax-1){
sourceStrArray[i]="["+sourceStrArray[i];
} else {
sourceStrArray[i]="["+sourceStrArray[i]+"}]";
}
System.out.println(sourceStrArray[i]);
}
return sourceStrArray;
jackson的话要求格式比较严 ,你要先把你的字符串中的单引号改成转义的 \" 然后我这么试了下,可以做成Map,
objectMapper = new ObjectMapper();
String aa = "[{\"aaa\":\"111\"}"
+ ",{\"dwbh\":\"01\",\"dwmc\":\"会议\",\"sjbh\":\"001\",\"klmyh\":\"aaa\",\"gsfr\":\"bbb\",\"dwjb\":\"ddd\"}"
+ ",{\"zsxm\":\"yyyy\",\"sfzmhm\":\"220111\",\"yhbh\":\"001\",\"yhnc\":\"333\",\"phone\":\"13353296588\",\"email\":\"333@111\"}]";
List<Map<String, Object>> list = objectMapper.readValue(aa, List.class);
System.out.println(list.size());
for(Map<String,Object> map:list){
System.out.println(map);
}
但是还是需要将map再转一次转到Object,这就有点麻烦了,资源代下载99dxz其他的暂时还没有想到什么好的方法