JSON追加6遍历

来源:互联网 发布:华为p8软件搬家 编辑:程序博客网 时间:2024/06/03 16:32

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

            String relation = "[{"codeId":"1","codeName":"你们"},{"codeId":"2","codeName":"他们"}]";            JSONArray ja=JSON.parseArray(relation);            Iterator<Object> it = ja.iterator();            List<PubCodeModel> list=new ArrayList<PubCodeModel>();            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<Object> it = ja.iterator();while (it.hasNext()) {JSONObject ob = (JSONObject) it.next();

}

一:遍历JsonArray

String str = "[{name:'a',value:'aa'},{name:'b',value:'bb'},{name:'c',value:'cc'},{name:'d',value:'dd'}]" ;  // 一个未转化的字符串

JSONArray json = JSONArray.fromObject(str ); // 首先把字符串转成 JSONArray  对象

if(json.size()>0){  for(int i=0;i<json.size();i++){    JSONObject job = json.getJSONObject(i);  // 遍历 jsonarray 数组,把每一个对象转成 json 对象    System.out.println(job.get("name")+"=") ;  // 得到 每个对象中的属性值  }}

一:遍历JsonObject

SONObject jsonObject = new JSONObject(s);然后用Iterator迭代器遍历取值,建议用反射机制解析到封装好的对象中

JSONObject jsonObject = new JSONObject(jsonString);        Iterator iterator = jsonObject.keys();while(iterator.hasNext()){            key = (String) iterator.next();        value = jsonObject.getString(key);}

SONArray jsonArray; 

jsonArray = JSONArray.fromObject(data);
for(int i=0;i<jsonArray.size();i++){
Object object=jsonArray.get(i);
JSONObject jsonObject=JSONObject.fromObject(object);
String parentId=jsonObject.getString("id");
Integer orderNo1=i;
service.updateParentId(parentId, orderNo1.toString(), "0");


JSONObject和JSONArray的API链接:
http://json-lib.sourceforge.net/apidocs/jdk15/net/sf/json/JSONObject.html
http://json-lib.sourceforge.net/apidocs/net/sf/json/JSONArray.html

1、识别json格式字符串是JSONObject还是JSONArray

JSON数据格式只有两种形式,分别是:

1
2
{"key":"value"}//JSONObject(对象)
[{"key1":"value1"}, {"key2":"value2"}]//JSONArray(数组)

JSONObject可以用key取值,JSONArray只能遍历取值

2、遍历json数组

假设我们得到的json字符串result如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
{
   "feature":"fresh_today",
   "photos":[
      {
         "id":40581634,
         "name":"Dandelion 5"
      },
      {
         "id":40581608,
         "name":"Dandelion 3"
      }
   ]
}

可以看出来,最外面是个json对象,photos节点是个数组,遍历代码如下:

1
2
3
4
5
6
7
8
9
10
11
importnet.sf.json.JSONArray;
importnet.sf.json.JSONObject;
 
JSONObject jsonObject = JSONObject.fromObject(result);
String feature = jsonObject.getString("feature");
JSONArray photoArray = jsonObject.getJSONArray("photos");
for(inti = 0; i < photoArray.size(); i++) {
    JSONObject object = (JSONObject) photoArray.get(i);
    intid = object.getInt("id");
    String name = object.getString("name");
}

附上一个很好用的在线json格式化和校验的网站:http://jsonformatter.curiousconcept.com/