遍历json是经常遇到的问题,之前看到网上很多方案都一开始默认json是一个map,或者说认为最外层一定是一个map;

并没有考虑到map与array混合嵌套的情况;

例如:[{"a":"a"},[{"b":"b"},["c",1,2,3]]]

展开后是:

[
    {
        "a":"a"
    },
    [
        {
            "b":"b"
        },
        [
            "c",
            1,
            2,
            3
        ]
    ]
]

这也是一个合法的json;

所以给出一个修正后的遍历json的方法,供大家参考:

    /*** traverseJson* 遍历的最简单直接的方式就是用递归,* json是一个map与array的混合体:* map中可以有map也可以有array;* array中可以有array也可以有map;* 所以递归之前,对于某一个节点,你不能断定他是JSONObject还是JSONArray* @param json* @return*/private Object traverseJson(Object json) {// check nullif (json == null) {return null;}try {if (json instanceof JSONObject) {// if json is a MapJSONObject retObj = new JSONObject();JSONObject jsonObj = (JSONObject)json;Iterator it = jsonObj.keys();while (it.hasNext()) {String key = (String)it.next();Object value = jsonObj.get(key);// TODO: do something hereretObj.put(key, traverseJson(value));}return retObj;} else if (json instanceof JSONArray) {// if json is an ArrayJSONArray retArr = new JSONArray();JSONArray jsonArr = (JSONArray)json;int len = jsonArr.length();for (int i = 0; i < len; ++i) {// TODO: do something hereretArr.put(traverseJson(jsonArr.get(i)));}return retArr;} else {// if json is just a raw element// TODO: do something herereturn json;}} catch (Exception e) {// deal Exception or throw it}return null;}

欢迎指正!

Java遍历JSON相关推荐

  1. java遍历json数据_Java 如何遍历JsonObject对象

    方法: iterator iter = jsoninfo.entryset().iterator(); 代码示例: public class test { public static void mai ...

  2. Java遍历Json数据

    Java遍历Json数据 今天需要遍历一下json,但是只查到了遍历一层json的文章,满足不了多层级的json遍历.所以自己写一下,用fastJson处理. 所遍历json需要考虑一下多层级的jso ...

  3. java遍历json的key和value_json对象遍历输出key和value

    js遍历json对象 原生js遍历json对象 遍历json对象: 无规律: <11script> var json = [ {dd:'SB',AA:'东东',re1:123}, {ccc ...

  4. Java遍历Json中的key和value

    最近对接了不少别人家的系统,他们的签名验签大多采用业务数据值拼接之后进行加密动作 这个时候遍历出对象中的key和value就有为方便,因此有以下现成代码 public String appendSig ...

  5. java遍历jsonobject_Java遍历JsonObject对象代码示例

    本篇文章小编给大家分享一下Java遍历JsonObject对象代码示例,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. 方法代码: Iterator i ...

  6. Java对json遍历_如何遍历Java中的json对象

    我正在尝试遍历json文件并获取所需的详细信息,这是我的json { "000": { "component": "c", "de ...

  7. java中将json字符串_Java中JSON字符串与java对象的互换实例详解

    在开发过程中,经常需要和别的系统交换数据,数据交换的格式有XML.JSON等,JSON作为一个轻量级的数据格式比xml效率要高,XML需要很多的标签,这无疑占据了网络流量,JSON在这方面则做的很好, ...

  8. Javascript用递归的方式遍历json数组

    前言 Javscript语言有很多值得探究和注意的地方,下面我们来看一下用递归的方式遍历JSON对象数组. 正文 假设我们的要遍历的数组是这样的: var array = [{id: 1,childr ...

  9. Java中JSON字符串与java对象的互换实例详解

    这篇文章主要介绍了在java中,JSON字符串与java对象的相互转换实例详解,非常不错,具有参考借鉴价值,需要的朋友可以参考下 在开发过程中,经常需要和别的系统交换数据,数据交换的格式有XML.JS ...

最新文章

  1. PHP支持http2,swoole-1.8.2 已发布,支持Http2.0协议
  2. c#_文件的保存与读取
  3. Spring Boot基本配置
  4. [控件] LabelView
  5. 消息(6)——WCF,构建简单的WCF服务,MTOM编码
  6. ZZULIOJ 1119: 一维数组排序
  7. 浅谈前后端分离与实践 之 nodejs 中间层服务
  8. mysql索引优化面试题_mysql索引优化面试题
  9. 蓝桥杯真题:等差素数列
  10. linux怎么看内存时序,内存速度和时序重要么
  11. oracle translate using,oracle translate() 详解
  12. 物联网案例(二):物联网系统如何进行实时决策
  13. ddddocr 汉字位置识别
  14. ESP32----NVS使用
  15. 刷算法第五天——P5594 模拟赛
  16. 中国铁路 12306 网站的高并发架构带来的思考?研究分析后,果然超牛逼…
  17. 2个月公众号粉丝破万的心路历程
  18. 【通信】基于 ADMM 的大规模 MIMO 无穷范数检测附matlab代码
  19. 联通光猫虚拟服务器设置,光猫虚拟服务器设置
  20. checksum 算法

热门文章

  1. 模式识别更接近计算机还是自动化,2020中科院自动化所考研初试经验
  2. 2020年末的一些职业规划思考
  3. 左右植树java_Plant 模拟植树活动,编写一个java应用程序 联合开发网 - pudn.com
  4. 这次经济危机的一些看法
  5. js——获取data-id 的值
  6. 网关 Spring Cloud Gateway 监控 actuator
  7. mysql日期类型计算机_2014年计算机二级考试MySQL试题 1
  8. NLP语义技术演进:从DP依存句法到SDP依存语义再到AMR抽象语义分析概述与开源实现...
  9. FPGA学习——数字密码锁(下)
  10. 图片生成base64格式