json遍历 分别使用【原】
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一些常见方法(API):处理JSON变得好简单
json遍历 分别使用【原】的更多相关文章
- 第61天:json遍历和封装运动框架(多个属性)
一.json 遍历 for in 关键字 for ( 变量 in 对象) { 执行语句; } 例如: var json = {width:200,height:300,left:50}co ...
- json遍历,List<Map<String,Object>>遍历
js怎样给input对象追加属性,如disabled $(":textbox").attr({"disabled":true}); List<Map< ...
- com.alibaba.fastjson和org.json遍历获取key
推荐都是用fastjson.org.json好像不支持序列化. com.alibaba.fastjson遍历获取key的方法: //fastjson解析方法 for (Map.Entry<Str ...
- jQuery json遍历渲染到页面并且拼接html
jQuery 处理 json遍历在页面中显示,并且拼接html. 1 <title>json多维数组遍历渲染</title> 2 3 <body> 4 <di ...
- jquery json遍历和动态绑定事件
<div id='tmpselectorList' style='border: 1px solid grey;max-height: 150px;position:absolute;text- ...
- 在Delphi7中JSON遍历节点不支持使用IN处理方法
相关资料:http://www.cnblogs.com/del/archive/2009/10/23/1588690.html Delphi2007源代码: procedure TForm1.Butt ...
- JSON 遍历转为Model Bean
@RequestMapping(value = "/batchAddPageIndexBrand") @ResponseBody public HashMap<String, ...
- 问题-Delphi7中JSON遍历节点不支持使用IN处理方法?
相关资料:http://www.cnblogs.com/del/archive/2009/10/23/1588690.html 问题现象:在高版本中可以使用IN处理JSON的节点循环问题,可是发现D7 ...
- 获取地址栏参数,json遍历
1. 获取地址栏参数 GetQueryString: function(name){ // 获取地址栏参数 var reg = new RegExp("(^|&)"+ na ...
随机推荐
- 自己写的browse.bat与perl写的url_handler.pl的比较
以前自己也写过Windows下自动打开多个浏览器测试某个URI,提高浏览器兼容性测试效率. 但是写的browse.bat文件还是最基础简陋的 @echo off if '%1'=='-c' ( sta ...
- [转帖]新的Linux后门开始肆虐 主要攻击中国服务器
新的Linux后门开始肆虐 主要攻击中国服务器 https://www.cnbeta.com/articles/tech/815639.htm 一种新的 Linux 系统后门已经开始肆虐,并主要运行在 ...
- [CB]2018全球半导体营收4700亿美元 三星继续碾压英特尔
2018全球半导体营收4700亿美元 三星继续碾压英特尔 https://www.cnbeta.com/articles/tech/808833.htm Gartner最新报告显示,2018年全球半导 ...
- python----特殊闭包
1.闭包的定义: 当子函数有调用父级函数变量(非全局变量)并返回子函数名时父级函数不会随着函数运行而结束释放,而是会保存状态等待子函数的调用. 我们常见的闭包类型: def fun1(): x = 1 ...
- 16mysql1
一.数据库的基本概念 1.1 常用的关系型数据库 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库. 1.2 sql语言 ...
- Apache虚拟主机
基本概述 虚拟Web主机 在同一台服务器中运行多个Web站点,其中每一个站点并不独立占用一台真正的计算机 httpd支持的虚拟主机类型 基于域名的虚拟主机 基于IP地址的虚拟主机 基于端口的虚拟主机 ...
- hdu 1025
Problem Description JGShining's kingdom consists of 2n(n is no more than 500,000) small cities which ...
- Java编程,打印昨天的当前时刻
public class Demo { /* * Java编程,打印昨天的当前时刻 */ public static void main(String[] args){ Calendar ca ...
- android-support-v4.jar 免积分下载
资源名称:android扩展插件 android-support-v4.jar 资源大小:137KB 上传日期:2012-10-08 资源积分:1 下载次数:136 电信下载地址:http://www ...
- 洛谷 P2300 合并神犇 解题报告
P2300 合并神犇 题目背景 loidc来到了NOI的赛场上,他在那里看到了好多神犇. 题目描述 神犇们现在正排成一排在刷题.每个神犇都有一个能力值p[i].loidc认为坐在附近的金牌爷能力参差不 ...