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. Docker Compose 容器编排

    1. 前言 Docker Compose 是 Docker 容器进行编排的工具,定义和运行多容器的应用,可以一条命令启动多个容器. 使用Compose 基本上分为三步: Dockerfile 定义应用 ...

  2. U 盘安装 CentOS的方法

    1. 刻录U盘 我使用的工具是 UltralISO 2. 打开ISO 3. 使用<启动>-<写入磁盘映像> 根据U盘的性能 可能好事 5min-15min左右 4.找到想要安装 ...

  3. python之json数据存储

    # 数据存储:json.dump()和json.load() # date:2017-07-17 import json file_name = 'D:/json_file.txt' nums = [ ...

  4. docker--compose--sonarqube

    Create this docker-compose.yml file: version: "2" services: sonarqube: image: sonarqube po ...

  5. POJ3259(Wormholes) 判断负环

    题意: 农夫john发现了一些虫洞,虫洞是一种在你到达虫洞之前把你送回目的地的一种方式,FJ的每个农场,由n块土地(编号为1-n),M 条路,和W个 虫洞组成,FJ想从一块土地开始,经过若干条路和虫洞 ...

  6. PHP 判断浏览器语言

    详情请参看代码 作用:判断当前的浏览器语言.接收传入参数.拼接字符串 <?php $lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'],0,2); if ...

  7. 【题解】 bzoj2006: [NOI2010]超级钢琴 (ST表+贪心)

    题面戳我 Solution 不会,看的题解 Attention 哇痛苦,一直不会打\(ST\)表,我是真的菜啊qwq 预处理 Log[1]=0;two[0]=1; for(int i=2;i<= ...

  8. android handler msg的使用 实现进度条

    package com.app.threadtest; import android.app.Activity; import android.os.Bundle; import android.os ...

  9. 【BZOJ4738/UOJ#276】汽水(点分治,分数规划)

    [BZOJ4738/UOJ#276]汽水(点分治,分数规划) 题面 BZOJ UOJ 题解 今天考试的题目,虽然说是写完了,但是感觉还是半懂不懂的来着. 代码基本照着\(Anson\)爷的码的,orz ...

  10. linux 分区、目录及用途

    主要分区: 目录 建议大小 格式 描述 / 10G-20G ext4 根目录 swap <2048M swap 交换空间 /boot 200M左右 ext4 Linux的内核及引导系统程序所需要 ...