您的位置:首页 > Web前端 > JavaScript

JSON:JSON对象和JSON数组混排的复杂字符串

2016-05-25 16:49 357 查看
  在java中的一个好用的JSON工具包:net.sf.json.JSONObject 和 net.sf.json.JSONArray

  一 解析JSON对象和JSON数组类型混排的复杂字符串

  举个例子:

  要求把demo中的json字符串,解析得到需要的变量(主要任务,区别解析JSON对象和JSON数组类型): 

{
"ThroughPut":{
"1461546080":[
3.9986060825147764,
101.18750156787883,
-93.19028940284933
],
"1461546140":[
10.504168194991284,
79.32800580482753,
-58.31966941484501
],
"1461546200":[
9.666977655396506,
65.97470645709711,
-46.64075114630414
]
},
"ActiveThreadsNum":{
"1461546080":[
18.99998334015418,
23.9064418688091,
14.093524811499258
],
"1461546140":[
18.49632839078893,
22.00327709020313,
14.989379691374722
],
"1461546200":[
20.37540941538413,
23.282270617546928,
17.46854821322133
]
   }
}


方案:

1解析JSON对象:strRead是上面的字符串demo,首先解析成JSONObject对象;

net.sf.json.JSONObjectjson_Arr=net.sf.json.JSONObject.fromObject(strRead);


2遍历JSONObject对象的所有key值,目的是取对应的value;

例如,  上面的demo:

(1)关键字:ThroughPut ;

值:{"1461546080":[18.99998334015418,23.9064418688091,14.093524811499258],"1461546140":[18.49632839078893,22.00327709020313,14.989379691374722],"1461546200":[20.37540941538413,23.282270617546928,17.46854821322133]};

(2)由于value又是一个JSONObject,继续net.sf.json.JSONObject.fromObject(jsonObjStr),解析成JSONObject对象;

关键字:"1461546080":

值:[18.99998334015418,23.9064418688091,14.093524811499258]

for(Objectkey1:json_Arr.keySet()){
StringjsonObjStr=json_Arr.get(key1).toString();
net.sf.json.JSONObjectjsonObject=net.sf.json.JSONObject.fromObject(jsonObjStr);


3发现上面的值又是一个JSONArray类型,所以需要解析JSONArray;

net.sf.json.JSONArrayjsonArr=net.sf.json.JSONArray.fromObject(tmp.toString());将输入的字符串[18.99998334015418,23.9064418688091,14.093524811499258]解析成JSONArray;
JSONArray是必须以[开头的字符串。
jsonArr.getDouble(1)得到第一个浮点型数值18.99998334015418

jsonArr.getDouble(2)得到第二个浮点型数值23.9064418688091



for(Objectk:jsonObject.keySet()){
Objecttmp=jsonObject.get(k);
net.sf.json.JSONArrayjsonArr=net.sf.json.JSONArray.fromObject(tmp.toString());
DoublejsonMax=jsonArr.getDouble(1);


  总结:主要就成功解析了这个复杂的混排字符串:利用这个好用的json工具包net.sf.json;注意有区别的解析array和object类型json;

  一般步骤:

  第一步:字符串解析成变量:

    json = fromObject(str)

  第二步:遍历解析的变量:key -> value 类型

    for(Objectkey1:json.keySet()){StringjsonObjStr=json.get(key1).toString();  }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: