json遍历

一 使用org.json.JSONObject遍历

之后的所有遍历都参考了:http://blog.csdn.net/u010648555/article/details/49815387 的设计思路.

package test.json;

import java.util.Iterator;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject; /**
* 该类引用自QQ号为742981086同学的链接http://blog.csdn.net/u010648555/article/details/49815387
* 思路很清晰,值得推荐.
* traverseJson(...)被我修改过注释.
* traverse1()保持不变
* traverse2()被我改过样例
*
* @author 359920692
*
*/
public class TraverseJson { /**
* 遍历json格式数据
*
* @param jsonObjArg
* @return
* @throws JSONException
*/
public static Object traverseJson(Object jsonObjArg) throws JSONException {
if (jsonObjArg == null) {
return null;
}
if (jsonObjArg instanceof JSONObject) {// 如果是JSONObject实例 (其实JSONObject内存就是以map格式存储的)
// 创建json对象
JSONObject retJsonObj = new JSONObject();
// 将json转换为JsonObject对象
JSONObject jsonObj = (JSONObject) jsonObjArg;
// 迭代 map所有的keys
Iterator it = jsonObj.keys();
while (it.hasNext()) {
// 获取map的key
String key = (String) it.next();
// 得到value的值
Object value = jsonObj.get(key);
// 递归遍历
retJsonObj.put(key, traverseJson(value));
}
return retJsonObj;
} else if (jsonObjArg instanceof JSONArray) {// 如果是JSONArray 实例
JSONArray retJsonArray = new JSONArray();
JSONArray jsonArray = (JSONArray) jsonObjArg;
// 获取Array 的长度
int length = jsonArray.length();
for (int i = 0; i < length; i++) {
retJsonArray.put(traverseJson(jsonArray.get(i)));
}
return retJsonArray;
} else {
// 除了JSONObj,JSONArray就只有最原始的String类型了,此时可以对String进行
// "加/解密,变换等操作",如return
// jsonObjArg+"^_^",可以让每个值都微笑起来
return jsonObjArg;
}
} /* 生成的JSON数据1
{
"QQ": [
"742981086@qq.com",
"742981086"
],
"name": "aflyun",
"age": 22,
"hobby": [
"编程",
"看书",
"徒步",
"爬山",
"游泳"
],
"adderss": {
"省份": "广东",
"市": "惠州",
"国籍": "中国"
}
}
*/
public static void traverse1() throws JSONException {
// 创建 一个JsonObjec对象
JSONObject retJsonObj = new JSONObject();
// 姓名
retJsonObj.put("name", "aflyun");
// 年龄
retJsonObj.put("age", 22);
// 联系方式
JSONArray arryQQ = new JSONArray();
arryQQ.put("742981086@qq.com").put("742981086");
retJsonObj.put("QQ", arryQQ);
// 地址 map
JSONObject jsonAdress = new JSONObject();
jsonAdress.put("country", "中国").put("省份", "广东").put("市", "惠州");
retJsonObj.put("adderss", jsonAdress);
// 生成数组array
JSONArray jArray = new JSONArray();
jArray.put("编程").put("看书").put("徒步").put("爬山").put("游泳");
retJsonObj.put("hobby", jArray);
System.out.println("1_________________________________________________________");
System.out.println(retJsonObj);
System.out.println(traverseJson(retJsonObj));
System.out.println("1_________________________________________________________\n");
} /*
生成数组类型的json格式数据
[
{
"Province": "ZheJiang"
},
[
{
"Person": "bobo"
},
{
"Fruit": [
"Apple",
"Banana",
"Pear"
]
}
]
]
*/
public static void traverse2() throws JSONException {
JSONArray retJArray = new JSONArray();
JSONObject aJson = new JSONObject();
aJson.put("Province", "ZheJiang");
retJArray.put(aJson);
JSONArray jArray1 = new JSONArray();
JSONObject personObj = new JSONObject();
personObj.put("Person", "bobo");
JSONArray fruitArray = new JSONArray();
fruitArray.put("Banana").put("Apple").put("Pear");
JSONObject fruitObj = new JSONObject();
fruitObj.put("Fruit", fruitArray);
jArray1.put(personObj).put(fruitObj);
// 将组装好的数据放入要返回的json数组中
retJArray.put(jArray1); System.out.println("2_________________________________________________________");
System.out.println(retJArray);
System.out.println(traverseJson(retJArray));
System.out.println("2_________________________________________________________\n");
} public static void main(String[] args) throws JSONException {
traverse1();
traverse2();
} }

二. 使用 com.alibaba.fastjson.JSON  fastjson遍历

fastJson顺序遍历JSON字段(转)

FastJson的基本使用

FastJson一些常见方法(API):处理JSON变得好简单

json遍历 分别使用【原】的更多相关文章

  1. 第61天:json遍历和封装运动框架(多个属性)

    一.json 遍历  for in  关键字  for ( 变量 in  对象)  { 执行语句;  } 例如: var json = {width:200,height:300,left:50}co ...

  2. json遍历,List<Map<String,Object>>遍历

    js怎样给input对象追加属性,如disabled $(":textbox").attr({"disabled":true}); List<Map< ...

  3. com.alibaba.fastjson和org.json遍历获取key

    推荐都是用fastjson.org.json好像不支持序列化. com.alibaba.fastjson遍历获取key的方法: //fastjson解析方法 for (Map.Entry<Str ...

  4. jQuery json遍历渲染到页面并且拼接html

    jQuery 处理 json遍历在页面中显示,并且拼接html. 1 <title>json多维数组遍历渲染</title> 2 3 <body> 4 <di ...

  5. jquery json遍历和动态绑定事件

    <div id='tmpselectorList' style='border: 1px solid grey;max-height: 150px;position:absolute;text- ...

  6. 在Delphi7中JSON遍历节点不支持使用IN处理方法

    相关资料:http://www.cnblogs.com/del/archive/2009/10/23/1588690.html Delphi2007源代码: procedure TForm1.Butt ...

  7. JSON 遍历转为Model Bean

    @RequestMapping(value = "/batchAddPageIndexBrand") @ResponseBody public HashMap<String, ...

  8. 问题-Delphi7中JSON遍历节点不支持使用IN处理方法?

    相关资料:http://www.cnblogs.com/del/archive/2009/10/23/1588690.html 问题现象:在高版本中可以使用IN处理JSON的节点循环问题,可是发现D7 ...

  9. 获取地址栏参数,json遍历

    1. 获取地址栏参数 GetQueryString: function(name){ // 获取地址栏参数 var reg = new RegExp("(^|&)"+ na ...

随机推荐

  1. “using NoSQL” under MySQL

    https://dev.mysql.com/doc/refman/5.7/en/document-store.html https://dev.mysql.com/doc/refman/5.7/en/ ...

  2. eclipse html 打开方式

    1. HTML Editor是有HTML语法着色的模式(类似于Notepad++里的效果),适用于大的HTML,这样复制剪贴效率较高,且有语法高亮. 2.Web Page Editor图形设计模式,类 ...

  3. Nginx+Php-fpm运行原理详解

    一.代理与反向代理 现实生活中的例子 1.正向代理:访问google.com 如上图,因为google被墙,我们需要vpnFQ才能访问google.com. vpn对于“我们”来说,是可以感知到的(我 ...

  4. C++拷贝构造函数的调用时机

    一.拷贝构造函数调用的时机 ​ 当以拷贝的方式初始化对象时会调用拷贝构造函数,这里需要注意两个关键点,分别是以拷贝的方式和初始化对象 1. 初始化对象 初始化对象是指,为对象分配内存后第一次向内存中填 ...

  5. [转帖]TMD为你揭秘中国互联网下半场所有秘密

    https://www.iyiou.com/p/35099.html 李安说,<比利.林恩的中场战事>是“一个成长的故事”.中国互联网也行至中场,下半场如何走,成长的方向在哪里,成当下关键 ...

  6. 普通PC安装ESXi5.5以及以上的方法

    原贴内容 With ESXi 5, ESX no longer uses MBR for boot, it has gone to GPT-based partitions instead.    W ...

  7. C/C++的内存泄漏检测工具Valgrind memcheck的使用经历

    Linux下的Valgrind真是利器啊(不知道Valgrind的请自觉查看参考文献(1)(2)),帮我找出了不少C++中的内存管理错误,前一阵子还在纠结为什么VS 2013下运行良好的程序到了Lin ...

  8. 关于gzip zgrep zcat 的使用

    最近由于重构代码,要判断很多接口是否还在使用,然后就要从现在已有日志里面去找 是否还有调用.我很疑惑,如果要一个一个文件从文件系统里面拷贝出来然后再使用grep cat vi 等方法去查找该有多麻烦. ...

  9. gitbook 简单使用

    gitbook 简单使用 之前由于公司培训过使用 gitbook,当时也没有进行安装使用.当时就感觉就是 markdown 语法,加上我本来就是使用 markdown 进行写博客之类.再加上这个东西本 ...

  10. Performance testing test scenarios

    1 check if page load time is within acceptable range2 check page load on slow connections 3 check re ...