在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. Java中各种引用(Reference)解析

    目录 1,引用类型 2, FinalReference 2.1, Finalizer 3, SoftReference 4, WeakReference 5, PhantomReference 6, ...

  2. java8中字符串常量以及GC相应处理机制

    目录 1,常量池 1.1, class文件常量池 1.2, 运行时常量池 1.3,字符串常量池 String.intern() -XX:StringTableSize 2,使用new关键字和使用字符串 ...

  3. STL中关于全排列next_permutation以及prev_permutation的用法

    这两个函数都包含在algorithm库中.STL提供了两个用来计算排列组合关系的算法,分别是next_permutation和prev_permutation. 一.函数原型 首先我们来看看这两个函数 ...

  4. python time.striptime模块用法

    python time模块中strptime用法 time.strptime(string[, format]) 其中string参数即为要深入的日期字符串.format为格式化的日期字符串. %Y ...

  5. 50 (OC)* URL Scheme 网页地址协议

    在Xcode 9 下,新建的工程,在plist文件中注册URL Schemes,从safari无法打开问题 1:URL Scheme是什么 2:URL Scheme有什么作用 3:URL Scheme ...

  6. 11-常用SQL总结

    1.设置表的列不能为nullalter table run.dbo.T1 alter column Col1 int not null 2.给表添加主键alter table run.dbo.T1 a ...

  7. sql server 使用 partition by 分区函数 解决不连续数字查询问题

    sql server表中的某一列数据为不一定连续的数字,但是需求上要求按照连续数字来分段显示,如:1,2,3,4,5,6,10,11,12,13, 会要求这样显示:1~6,10~13.下面介绍如何实现 ...

  8. 【linux】【gitlab】gitlab安装、备份、恢复、升级、内存消耗问题

    前言 GitLab:GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务.功能:Gitlab 是一个提供代码托管.提交审核和问题跟踪的代码管理平 ...

  9. 夯实Java基础系列4:一文了解final关键字的特性、使用方法,以及实现原理

    目录 final使用 final变量 final修饰基本数据类型变量和引用 final类 final关键字的知识点 final关键字的最佳实践 final的用法 关于空白final final内存分配 ...

  10. Spring MVC 梳理 - 四种HandlerMapping

    总结 (1)SpringMVC导入jar包,配置web.xml 这些都是基础的操作. (2)四种HandlerMapping:DefaultAnnotationHandlerMapping;Simpl ...