注意到两个JSON的不同的使用,两个功能差不多,但是属于不同的包,一个是alibaba.fastjson.JSON,另一个是net.sf.json
当有一个String的字符串时,需要把它转化为JSONArray的数组(net.sf.json.JSONArray.fromObject(str))
取出name7的值,首先需要使用jsonArray.getJSONObject(0)取出数组第一项,得出{name1:{name2:{name3:‘value1’,name4:{name5:‘value2’,name6:{name7:‘value3’}}}}},
然后再使用getJSONObject(“name1”)依次往下取值,直到取到最后一项时,使用get(String key),取出它对应的value值,作为字符串返回
package com.tapt.instance;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
public class Jsontest {
public static void main(String[] args) {
String json="{\"name\":\"刘德华\",\"age\":35,\"some\":[{\"k1\":\"v1\",\"k2\":\"v2\"},{\"k3\":\"v3\",\"k4\":\"v4\"}]}";
JSONObject jso=JSON.parseObject(json);//json字符串转换成jsonobject对象
System.out.println("初始jsonObject:\n"+jso+"\n");
JSONArray jsarr=jso.getJSONArray("some");//jsonobject对象取得some对应的jsonarray数组
System.out.println("jsonObject里面的jsonarray:\n"+jsarr+"\n");
JSONObject ao=jsarr.getJSONObject(0);//jsonarray对象通过getjsonobjext(index)方法取得数组里面的jsonobject对象
System.out.println("jsonObject里面的jsonarray里面的第一个jsonobject:\n"+ao+"\n");
String vString=ao.getString("k1");//jsonobject对象通过key直接取得String的值
System.out.println("jsonObject里面的jsonarray里面的第一个jsonobject里的键值对对k1取值:\n"+vString+"\n");
}
}
控制台输出:
初始jsonObject:
{“age”:35,“name”:“刘德华”,“some”:[{“k1”:“v1”,“k2”:“v2”},{“k3”:“v3”,“k4”:“v4”}]}
jsonObject里面的jsonarray:
[{“k1”:“v1”,“k2”:“v2”},{“k3”:“v3”,“k4”:“v4”}]
jsonObject里面的jsonarray里面的第一个jsonobject:
{“k1”:“v1”,“k2”:“v2”}
jsonObject里面的jsonarray里面的第一个jsonobject里的键值对对k1取值:
v1
ps:要遍历jsonarray对象,可以通过size()方法取得jsonarray的长度,jsonarray.getJSONObject(index)取得里面JSONObject对象;如:
for(int index=0;index<jsonarray.size(),index++){}
原文链接:https://blog.csdn.net/qq_36330643/article/details/77976697