public static void main(String[] args) {
List<Map<Integer, String>> m = new ArrayList<Map<Integer,String>>();
Map<Integer, String> i = new HashMap<Integer, String>();// {1=1, 111=111, 1111=1111, 11=11}
i.put(, "");
i.put(, "");
i.put(, "");
i.put(, "");
Map<Integer, String> ii = new HashMap<Integer, String>();// {1=1, 111=111, 1111=1111, 11=11}
ii.put(, "");
ii.put(, "");
ii.put(, "");
ii.put(, "");
m.add(i);
m.add(ii);// [{1=1, 111=111, 1111=1111, 11=11}, {1=1, 111=111, 1111=1111, 11=11}]
}

从外到里看,例子中就是一个数组,数组里面是两个json格式的字符串。这样分析思路就清晰多了。

工作中需要取出name4的值,你们会怎么取呢?。最初我都想过字符串截取,那时还不了解JSONArray,现在知道了,取出来也就相当容易了。

取出name4值过程步骤:1,将以上字符串转换为JSONArray对象;2,取出对象的第一项,JSONObject对象;3,取出name1的值
JSONObject对象;4,取出name2的值JSONObject对象;5,取出name4的值value2。

示例中json数组格式的字符串可以通过方法直接转换为JSONArray的格式:JSONArray.fromObject(String)

  1. </pre><pre name="code" class="java">JSONArray getJsonArray=JSONArray.fromObject(arrayStr);//将结果转换成JSONArray对象的形式
  2. JSONObject getJsonObj = getJsonArray.getJSONObject(0);//获取json数组中的第一项
  3. String result=getJsonObj.getJSONObject("name1").getJSONObject("name2").getJSONObject("name4");

好了我们说说这两个对象。

1,JSONObject

json对象,就是一个键对应一个值,使用的是大括号{ },如:{key:value}

2,JSONArray

json数组,使用中括号[ ],只不过数组里面的项也是json键值对格式的

Json对象中添加的是键值对,JSONArray中添加的是Json对象

  1. JSONObject Json = new JSONObject();
  2. JSONArray JsonArray = new JSONArray();
  3. Json.put("key", "value");//JSONObject对象中添加键值对
  4. JsonArray.add(Json);//将JSONObject对象添加到Json数组中

3,JSONObject与Map

Map map和json都是键值对,不同的是map中键值对中间用等号分开,json中键值对中间用冒号分开。其实json就是一种特殊形式的map。

import java.util.Iterator;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject; public class map {
public static void main(String[] args) throws JSONException { // str是JSONObject
String str = "{\"people\":[{\"firstName\":\"Brett\",\"lastName\":\"McLaughlin\",\"email\":\"aaaa\"},{\"firstName\":\"Jason\",\"lastName\":\"Hunter\",\"email\":\"bbbb\"},{\"firstName\":\"Elliotte\",\"lastName\":\"Harold\",\"email\":\"cccc\"}]}";
JSONObject jo = new JSONObject(str);// {"people":[{"lastName":"McLaughlin","email":"aaaa","firstName":"Brett"},{"lastName":"Hunter","email":"bbbb","firstName":"Jason"},{"lastName":"Harold","email":"cccc","firstName":"Elliotte"}]}
// getJSONArray()表示返回值是JSONArray
JSONArray info = jo.getJSONArray("people");// [{"lastName":"McLaughlin","email":"aaaa","firstName":"Brett"},{"lastName":"Hunter","email":"bbbb","firstName":"Jason"},{"lastName":"Harold","email":"cccc","firstName":"Elliotte"}]
System.out.println(info);
for (int i = ; i < info.length(); i++) {
JSONObject obj = info.getJSONObject(i);// {"lastName":"McLaughlin","email":"aaaa","firstName":"Brett"}
Iterator it = obj.keys();
while (it.hasNext()) {
String key = (String) it.next();// lastName
System.out.println(obj.get(key));// McLaughlin
}
} // jsonContent是JSONObject
String jsonContent = "{'hello':'world','abc':'xyz'}";
JSONObject jsonObject = new JSONObject(jsonContent);// {"hello":"world","abc":"xyz"}
String str1 = jsonObject.getString("hello");// world
String str2 = jsonObject.getString("abc");// xyz
System.out.println(str1);
System.out.println(str2); // jsonContent是JSONArray
jsonContent = "[{'hello':333,'abc':false,'xyz':{'a':1,'b':'ab'}},{'hello':555,'abc':true,'xyz':{'a':2,'b':'ba'}}]";
JSONArray jsonArray = new JSONArray(jsonContent);// [{"hello":333,"abc":false,"xyz":{"b":"ab","a":1}},{"hello":555,"abc":true,"xyz":{"b":"ba","a":2}}]
for (int i = ; i < jsonArray.length(); i++) {
JSONObject jsonobject2 = jsonArray.getJSONObject(i);// {"hello":333,"abc":false,"xyz":{"b":"ab","a":1}}
int value1 = jsonobject2.getInt("hello");//
boolean value2 = jsonobject2.getBoolean("abc");// false
// String value3=jsonobject2.getString("xyz");
JSONObject jsonobject3 = jsonobject2.getJSONObject("xyz");// {"b":"ab","a":1}
int value4 = jsonobject3.getInt("a");//
String value5 = jsonobject3.getString("b");// ab
System.out.println(value1);
System.out.println(value2);
System.out.println(value4);
System.out.println(value5);
} // str是JSONObject,没有最外层key的json
str = "{'TI':[{'value':'aa1','count':10},{'value':'aa2','count':15},{'value':'aa3','count':20}],"
+ "'AB':[{'value':'ab','count':110},{'value':'ab2','count':115},{'value':'ab3','count':210}]}";
JSONArray newArray = new JSONArray();
JSONObject newJson = new JSONObject();
try {
JSONObject obj = new JSONObject(str); // {"AB":[{"count":110,"value":"ab"},{"count":115,"value":"ab2"},{"count":210,"value":"ab3"}],"TI":[{"count":10,"value":"aa1"},{"count":15,"value":"aa2"},{"count":20,"value":"aa3"}]}
Iterator it = obj.keys();
while (it.hasNext()) {
String key = (String) it.next(); // AB
String value = obj.getString(key); // [{"count":110,"value":"ab"},{"count":115,"value":"ab2"},{"count":210,"value":"ab3"}]
JSONArray array = obj.getJSONArray(key); // [{"count":110,"value":"ab"},{"count":115,"value":"ab2"},{"count":210,"value":"ab3"}]
for (int i = ; i < array.length(); i++) {
JSONObject jsonobject = array.getJSONObject(i); // {"count":110,"value":"ab"}
jsonobject.put("name", key);
jsonobject.put("exp",
key + "=" + jsonobject.getString("value"));
newArray.put(jsonobject); // {"exp":"AB=ab","count":110,"name":"AB","value":"ab"}
}
}
newJson.put("groups", newArray);
System.out.println(newJson); // {"groups":[{"exp":"AB=ab","count":110,"name":"AB","value":"ab"},{"exp":"AB=ab2","count":115,"name":"AB","value":"ab2"},{"exp":"AB=ab3","count":210,"name":"AB","value":"ab3"},{"exp":"TI=aa1","count":10,"name":"TI","value":"aa1"},{"exp":"TI=aa2","count":15,"name":"TI","value":"aa2"},{"exp":"TI=aa3","count":20,"name":"TI","value":"aa3"}]} } catch (JSONException e) {
e.printStackTrace();
}
} }

Map (就一个json.jar)的更多相关文章

  1. java中Array/List/Map/Object与Json互相转换详解(转载)

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器解析和生成.它基于JavaScript Programming Langu ...

  2. 第3章 springboot接口返回json 3-1 SpringBoot构造并返回一个json对象

    数据的使用主要还是以JSON为主,我们不会去使用XML. 这个时候我们先不使用@RestController,我们使用之前SpringMVC的那种方式,就是@Controller.  @Respons ...

  3. java中Array/List/Map/Object与Json互相转换详解

    http://blog.csdn.net/xiaomu709421487/article/details/51456705 JSON(JavaScript Object Notation): 是一种轻 ...

  4. 一起写一个JSON解析器

    [本篇博文会介绍JSON解析的原理与实现,并一步一步写出来一个简单但实用的JSON解析器,项目地址:SimpleJSON.希望通过这篇博文,能让我们以后与JSON打交道时更加得心应手.由于个人水平有限 ...

  5. Spring初始化 Map 和 解析Json value

    单独定义Map数据结构的bean: <bean id= "expToLevelMap" class="org.springframework.beans.facto ...

  6. 如何编写一个JSON解析器

    编写一个JSON解析器实际上就是一个函数,它的输入是一个表示JSON的字符串,输出是结构化的对应到语言本身的数据结构. 和XML相比,JSON本身结构非常简单,并且仅有几种数据类型,以Java为例,对 ...

  7. 《Python网络编程》学习笔记--使用谷歌地理编码API获取一个JSON文档

    Foundations of Python Network Programing,Third Edition <python网络编程>,本书中的代码可在Github上搜索fopnp下载 本 ...

  8. 将一个JSON数组[{},{},{}]按一定规则合并到另一个JSON数组[{},{},{}]

    // 将一个JSON数组[{},{},{}]按一定规则合并到另一个JSON数组[{},{},{}] // Object.assign方法的第一个参数是目标对象,后面的参数都是源对象. var list ...

  9. BeanShell使用json.jar包处理Json数据

    环境准备 ①Jmeter版本 ,JDK ②前置条件:将json.jar包置于..\lib\下, 如果还是报错,可以将该jar包添加到测试计划的Library中:否则会报:Typed variable ...

随机推荐

  1. 前端-js进阶和JQ源码思维导图笔记

    看不清的朋友右键保存或者新窗口打开哦!喜欢我可以关注我,还有更多前端思维导图笔记

  2. mybatis 高级映射和spring整合之查询缓存(5)

    mybatis 高级映射和spring整合之查询缓存(5) 2.0 查询缓存 2.0.1 什么是查询缓存 mybatis提供缓存,用于减轻数据压力,提高数据库性能. mybatis提供一级缓存和二级缓 ...

  3. MyEclipse 中的一些快捷键

    @import url(/css/cuteeditor.css); ------------------------------------- MyEclipse 快捷键1(CTRL) ------- ...

  4. C#中的引用传递和值传递。

    最近在写项目中有同事碰到这样的传值问题,可能很多对这个参数的传递还有点疑惑,自己也是对这个基础知识做一个回顾和巩固. 首先什么是值类型和引用类型可以去园里看一下相关的资料,都有介绍. 常用值类型包括: ...

  5. 基于ACE的TAO开发---一个简单的入门实例-----VS2008(二)

    上一节已经说了如何编译idl文件.现在就用编好的文件来写一个最小的corba小程序的.程序分为服务器程序和客户端程序. 说明下,代码是<基于C++CORBA高级编程>一书中的例子. 1.首 ...

  6. 找回消失的ubuntu启动选项

    启动菜单消失不是第一次了,这一次还是记录下来吧 原文链接:http://blog.chinaunix.net/uid-26527046-id-3748986.html 在安装windows后安装的ub ...

  7. 杭电 1040 As Easy As A+B 【排序】

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1040 解题思路:数据不大,可以直接用冒泡排序 #include<stdio.h> int ...

  8. (转)微服务架构 互联网保险O2O平台微服务架构设计

    http://www.cnblogs.com/Leo_wl/p/5049722.html 微服务架构 互联网保险O2O平台微服务架构设计 关于架构,笔者认为并不是越复杂越好,而是相反,简单就是硬道理也 ...

  9. ios 编译版本 最低版本 运行版本 动态链接库

    if ([[UIDevice currentDevice].systemVersion floatValue] >= 10.0) 运行环境判断: #if __IPHONE_OS_VERSION_ ...

  10. ubuntu区域语言(locale)设置(切换为中文)

    第一步:编辑文件 代码:sudo gedit  /var/lib/locales/supported.d/local (这个文件是所有已经激活的区域语言的列表) 写入相关内容,比如写入如下内容: zh ...