博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Json递归解析实例
阅读量:4623 次
发布时间:2019-06-09

本文共 1840 字,大约阅读时间需要 6 分钟。

  

  最近遇到包含多层的Json字符串解析的问题,查了一些帖子,不能很好解决。看了下帮助文档,用下面方法解决。

上代码

Maven 库

org.json
json
20180130

 

Java 代码

由于业务需要,下面函数里只需要取到各个层级Json中的key, 放到一个集合中。大家也完全可以取完整的key和value. 根据自己需要,稍作修改即可。下面的关键是while 循环中的两个If 语句,很多帖子都没有把这里写清楚,

第一个 if (jsonObj.optJSONArray(key) instanceof JSONArray) 判断这个key 的value 还是不是一个有多层级的JSONArray.

第二个 if (jsonObj.optJSONObject(key) instanceof JSONObject) 判断这个key 的value 是不是一个只有一层的JSONObject.

 

public static void jsonObjParseRecur(Set
set,String jsonText) { try{ JSONObject jsonObj = new JSONObject(jsonText); Iterator
keys=jsonObj.keys(); while(keys.hasNext()){ String key = keys.next(); set.add(key);// System.out.println(key+": " + jsonObj.get(key).toString()); if (jsonObj.optJSONArray(key) instanceof JSONArray) { JSONArray jsonArray = jsonObj.getJSONArray(key); for (int i = 0; i < jsonArray.length(); i++) { JSONObject jsonArrayObj = jsonArray.getJSONObject(i); String jsonArrayObjString = jsonArrayObj.toString(); jsonObjParseRecur(set,jsonArrayObjString); } } if (jsonObj.optJSONObject(key) instanceof JSONObject) { jsonObjParseRecur(set,jsonObj.optJSONObject(key).toString()); } } } catch (JSONException e) { e.printStackTrace(); } // System.out.println(set); }

 

转载于:https://www.cnblogs.com/digod/p/10561086.html

你可能感兴趣的文章
简单计算题:鸡兔同笼
查看>>
linux内核配置与编译
查看>>
Docker---Run命令
查看>>
直角三角形填数
查看>>
This function or variable may be unsafe
查看>>
function Language
查看>>
WEB测试重点--(转载)
查看>>
【C/C++开发】运算符重载二
查看>>
【linux开发】Linux下配置java环境 安装eclipse
查看>>
HTTP入门
查看>>
Android缓存
查看>>
条件语句,while循环语句:完整的温度转换程序
查看>>
9patch图的尺寸尽量为偶数
查看>>
python常用模块之random
查看>>
Android种 adb是什么(转)
查看>>
【转】MySQL时间函数的使用:查询本周、下周、本月、下个月份的数据
查看>>
文献综述随笔(十七)
查看>>
JavaScript声音播放
查看>>
13个JavaScript图表(JS图表)图形绘制插件
查看>>
Bootstrap 辅助类
查看>>