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数组类型):
方案:
1解析JSON对象:strRead是上面的字符串demo,首先解析成JSONObject对象;
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]
3发现上面的值又是一个JSONArray类型,所以需要解析JSONArray;
总结:主要就成功解析了这个复杂的混排字符串:利用这个好用的json工具包net.sf.json;注意有区别的解析array和object类型json;
一般步骤:
第一步:字符串解析成变量:
json = fromObject(str)
第二步:遍历解析的变量:key -> value 类型
for(Objectkey1:json.keySet()){StringjsonObjStr=json.get(key1).toString(); }
一 解析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(); }
相关文章推荐
- [RxJS] Filtering operators: takeLast, last
- 欢迎使用CSDN-markdown编辑器
- Javascript判断页面刷新或关闭的方法
- js 正则 demo
- 解决DWZ框架文件上传没有关闭当前的dialog的问题
- javascript 笔记——setTimeout的参数问题
- [RxJS] Filtering operators: take, first, skip
- phaser.js入门篇
- js将本地时间与服务器时间同步
- js prototype介绍
- js every扩展
- [RxJS] Filtering operator: filter
- [JavaScript] 判断键盘同时按某些键时执行操作。
- 各个JSON技术的比较
- 在js里通过id控制表或div的隐藏和显示,以及把id前缀相同的div全部隐藏起来
- Retrofit + GSON处理JSON模板
- 读书笔记1---JavaScript词法结构
- js常见事件及案例-onFocus
- 将XML文件中的内容转换为Json对象
- javascript判断浏览器类型(咋个办呢 zgbn)