在java中的一个好用的JSON工具包:net.sf.json.JSONObject 和 net.sf.json.JSONArray

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

  举个例子:

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

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

方案:

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

net.sf.json.JSONObject json_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 (Object key1 : json_Arr.keySet()) {
String jsonObjStr = json_Arr.get(key1).toString();
net.sf.json.JSONObject jsonObject = net.sf.json.JSONObject.fromObject(jsonObjStr);

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

net.sf.json.JSONArray jsonArr = 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(Object k : jsonObject.keySet()){
Object tmp = jsonObject.get(k);
net.sf.json.JSONArray jsonArr = net.sf.json.JSONArray.fromObject(tmp.toString());
Double jsonMax = jsonArr.getDouble();

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

  一般步骤:

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

    json = fromObject(str)

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

    for (Object key1 : json.keySet()) { String jsonObjStr = json.get(key1).toString();  }

JSON:JSON对象和JSON数组混排的复杂字符串的更多相关文章

  1. C# json反序列化 对象中嵌套数组 (转载) 可能会导致循环或多重级联路径。请指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其他 FOREIGN KEY 约束。

    C# json反序列化 对象中嵌套数组 (转载)   看图: 这里可以看到是二层嵌套!!使用C#如何实现?? 思路:使用list集合实现 → 建立类 → list集合 → 微软的   Newtonso ...

  2. jackson简单使用,对象转json,json转对象,json转list

    添加jackson依赖: // https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core compile g ...

  3. PHP将json或对象转成数组

    今天老大突然给了我一个小任务,给我一个txt文件,里边是很多的json字串,要求将这些字串转换成php中的数组: 于是开足火力,用了将进5分钟的时间完成了任务,代码如下: $jsonStr = fil ...

  4. C# json反序列化 对象中嵌套数组 (转载)

    看图: 这里可以看到是二层嵌套!!使用C#如何实现?? 思路:使用list集合实现 → 建立类 → list集合 → 微软的   Newtonsoft.Json  (一款.NET中开源的Json序列化 ...

  5. 使用Jackson来实现Java对象与JSON的相互转换的教程

    一.入门Jackson中有个ObjectMapper类很是实用,用于Java对象与JSON的互换.1.JAVA对象转JSON[JSON序列化] 1 2 3 4 5 6 7 8 9 10 11 12 1 ...

  6. .Net使用Newtonsoft.Json.dll(JSON.NET)对象序列化成json、反序列化json示例教程

    JSON作为一种轻量级的数据交换格式,简单灵活,被很多系统用来数据交互,作为一名.NET开发人员,JSON.NET无疑是最好的序列化框架,支持XML和JSON序列化,高性能,免费开源,支持LINQ查询 ...

  7. JSON转换类(二)--List转换成Json、对象集合转换Json等

    #region List转换成Json /// <summary> /// List转换成Json /// </summary> public static string Li ...

  8. List转换成Json、对象集合转换Json等

    #region List转换成Json /// <summary> /// List转换成Json /// </summary> public static string Li ...

  9. JsonUtil对象与json互转

    OrderDto orderDto = JsonUtil.json2Object(json,     new TypeRef<OrderDto>() {     }); package c ...

随机推荐

  1. PHP 错误:Warning: Cannot modify header information - headers already sent by ...

    PHP初学者容易遇到的错误:Warning: Cannot modify header information - headers already sent by ...: 通常是由不正确使用 hea ...

  2. laravel模板布局

    在实际的开发中,我们会遇到许多重复页面的部分,这些页面的重复会让我们的代码看起来非常冗余 所以我们要进行页面的布局规划.思路:将页面中的公有部分取出来作为单独的页面,其他继承公共模板 在公共模板的基础 ...

  3. Hive中的数据库(Database)和表(Table)

    在前面的文章中,介绍了可以把Hive当成一个"数据库",它也具备传统数据库的数据单元,数据库(Database/Schema)和表(Table). 本文介绍一下Hive中的数据库( ...

  4. ubuntu 12.04下访问windows共享文件夹

    ubuntu 12.04LTS已经不支持smbfs文件系统,所以不能用mount -smbfs 来映射windows共享文件夹. 常见有两种方法 1.terminal下 mount //192.168 ...

  5. 遇到XML-GB2312网页编码的处理方法

    报的错误:encoding error : input conversion failed due to input error, bytes  I/O error : encoder error 1 ...

  6. Driect3D初始化演示

    初始化Direct3D演示 初始化Driect3D类: #include "Common\d3dApp.h" #include <DirectXColors.h> us ...

  7. Android手机QQ文件夹解析

    注:切勿修改手机QQ文件夹,以免造成不必要的使用问题及无法修复的数据丢失] 安卓手机QQ tencent文件夹解析 QQ下载的聊天背景:tencent→MobileQQ→system_backgrou ...

  8. [Scikit-learn] 4.3 Preprocessing data

    数据分析的重难点,就这么来了,欢迎欢迎,热烈欢迎. 4. Dataset transformations 4.3. Preprocessing data 4.3.1. Standardization, ...

  9. pyhon 浅copy

    一般python的copy是没有用的, 但是让你熟悉浅copy给你举个清晰的例子 person = ["name",["money",100]] p1 = pe ...

  10. Spring Cloud Gateway 之请求坑位[微服务IP不同请求会失败]

    问题产生背景 在使用Spring Cloud Gateway过程中,希望配置多Routes映射不同的微服务,因为Gateway 和Zuul的访问路径不同(zuul 会带有服务service Id),造 ...