搜索
写经验 领红包
 > 设计

遍历未知长度数组(jso在不知道key的情况下)

导语:小技巧遍历JSON串儿之未知key-value

前言:

有时候json串里面我们并不知道它的key是什么,甚至都不知道有多少key,这个时候我们又想打印出所有的key-value对,因此就需要用到迭代输出。

正文:

采用迭代的方式,遍历JSON中所有的KEY。

在网上搜索会发现很多例子,但是都不写是具体是哪个包里面的类,所以引用起来就有点费解。这里我们抽两个例子来遍历:

Json串为:

{

"files": {

"b3800107689d7309dc1fc0ae7e22b27d329986dc1d1da11a2efff4b8168ee2fa.png": "申请人身份证.png",

"5f4d3ef75df1e46af8231e37eaac7747ab5f77e4e20431487707d0ecf10d248a.png": "申请人工作证明.png",

"477b7c7fde5e2d87386fd400c80a60f3dd696af3d53b2a2d64e228ba0914a78e.png": "车辆登记本.png",

"032795fc5ab793c1862038a3d9164e5e2ce9147071501f80063c47f67e799394.jpg": "申请人征信授权书.jpg"

}

}

方法一:用net.sf.json.JSONObject遍历

第一步导入maven包依赖:

<dependency> <groupId>net.sf.json-lib</groupId> <artifactId>json-lib</artifactId> <version>2.4</version></dependency>

第二步main方式测试:

public static void main(String[]args){ String oriJsonStr="{\n" + " \"files\": {\n" + " \"b3800107689d7309dc1fc0ae7e22b27d329986dc1d1da11a2efff4b8168ee2fa.png\": \"申请人身份证.png\",\n" + " \"5f4d3ef75df1e46af8231e37eaac7747ab5f77e4e20431487707d0ecf10d248a.png\": \"申请人工作证明.png\",\n" + " \"477b7c7fde5e2d87386fd400c80a60f3dd696af3d53b2a2d64e228ba0914a78e.png\": \"车辆登记本.png\",\n" + " \"032795fc5ab793c1862038a3d9164e5e2ce9147071501f80063c47f67e799394.jpg\": \"申请人征信授权书.jpg\"\n" + " }\n" + "}"; JSONObject maleArray = JSONObject.fromObject(oriJsonStr); JSONObject files = maleArray.getJSONObject("files");  Iterator<String> male_Iterator = files.keys(); male_Iterator.forEachRemaining(key-> System.out.println(key+"-"+files.get(key)));} 

输出结果图一:

net.sf.json.JSONObject

方法二:用com.alibaba.fastjson.JSONObject

第一步导入maven包依赖:

<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.51</version></dependency>

第二步main方式测试:

public static void main(String[]args){ String s="{\n" + " \"files\": {\n" + " \"b3800107689d7309dc1fc0ae7e22b27d329986dc1d1da11a2efff4b8168ee2fa.png\": \"申请人身份证.png\",\n" + " \"5f4d3ef75df1e46af8231e37eaac7747ab5f77e4e20431487707d0ecf10d248a.png\": \"申请人工作证明.png\",\n" + " \"477b7c7fde5e2d87386fd400c80a60f3dd696af3d53b2a2d64e228ba0914a78e.png\": \"车辆登记本.png\",\n" + " \"032795fc5ab793c1862038a3d9164e5e2ce9147071501f80063c47f67e799394.jpg\": \"申请人征信授权书.jpg\"\n" + " }\n" + "}"; JSONObject jsonObject = JSONObject.parseObject(s); JSONObject files1 = jsonObject.getJSONObject("files"); Set<String> strings = files1.keySet(); strings.forEach(key-> System.err.println(key+"-"+files1.get(key))); }

输出结果图二:

com.alibaba.fastjson.JSONObject

还有很多JSONObject的包,都是如出一辙,希望大家多多探讨,所谓艺多不压身,多学点总是好的,坚持学习,每天进步一点点。

本文内容由小鸣整理编辑!