json有两种类型,jsonObject(即jsonNode)和jsonArray,jsonArray怎么遍历?为什么不能将jsonArray转换为list?

json有两种类型,jsonObject(即jsonNode)和jsonArray

1)jsonArray怎么遍历?

①、转为JsonArray格式 
②、使用Iterator进行遍历准备

            String relation = "[{"codeId":"1","codeName":"你们"},{"codeId":"2","codeName":"他们"}]";
            JSONArray ja=JSON.parseArray(relation);
            Iterator it = ja.iterator();
            List list=new ArrayList();
            while (it.hasNext()) {
                JSONObject ob = (JSONObject) it.next();
                PubCodeModel model = null;
                if(ob.getString("codeId")!=null){
                    model=new PubCodeModel();
                    model.setVcode(ob.getString("codeId"));
                }
                if(ob.getString("codeName")!=null){
                    model.setVname(ob.getString("codeName"));
                }
                if(model!=null){
                    list.add(model);
                }
            } 
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

关键CODE

Iterator it = ja.iterator();
while (it.hasNext()) {
JSONObject ob = (JSONObject) it.next();
} 
  

2)为什么不能将jsonArray转换为list?因为转换为list之后,json串里的双引号就没有了。

String test= a//a的值为,[{"tableName":"org","row":[{"co1":"03","co2":"周","co3":"123"}]}]
List testList= mapper.readValue(test, List.class);//执行之后,testList的值为,[{tableName=org, row=[{co1=03, co2=周, co3=123}]}]

双引号就没有了,当我想获取row里面的co2的值,就不好处理了,没办法再使用mapper.readValue(testList.get(0).get("row"), List.class),因为mapper.readValue(testList.get(0)没有双引号,mapper.readValue这种方法处理不了。




你可能感兴趣的:(json有两种类型,jsonObject(即jsonNode)和jsonArray,jsonArray怎么遍历?为什么不能将jsonArray转换为list?)