转载网址:https://blog.csdn.net/changhenshui1990/article/details/69950663

https://www.cnblogs.com/liduanwen/p/5951543.html

http://www.jb51.net/article/85785.htm

1.JSONObject:json 对象,使用大括号{ },如{key:value},就是一种特殊格式的map,存放键值对

类似: {"userid":"1001","success":true,''result'':[{"name":"张三"},{"age":"20"}]}

2.JSONArray:  json 数组,使用中括号,JSONArray 中添加的是 json 对象
例如:
[

{"userid":"1001","success":true,''result'':[{"name":"张三"},{"age":"20"}]},

{"userid":"1001","success":true,''result'':[{"name":"张三"},{"age":"20"}]},

{"userid":"1001","success":true,''result'':[{"name":"张三"},{"age":"20"}]}

]

由JSON数组的格式可发现,类似于List<Map<String,Object>>对象,可以说jsonArray对象就是特殊的listMap对象。

总结:json 对象添加的是键值对,JSONArray 中添加的是 json 对象
3.示例:
JSONObject json = new JSONObject();
JSONArray jsonArray = new JSONArray();
json.put("key1", "value1");//JSONObject 对象中添加键值对
json.put("key2", "value2");//JSONObject 对象中添加键值对
jsonArray.add(json);// 将 JSONObject 对象添加到 Json 数组中
System.out.println(jsonArray);//[{"key1":"value1","key2":"value2"}]

4 .遍历JsonArray

String jsonStr = "[{name:'a',value:'aa'},{name:'b',value:'bb'},{name:'c',value:'cc'}]";
// 首次把字符串转成 JSONArray 对象
JSONArray json = JSONArray.fromObject(jsonStr);
if (json.size() > 0) {
   for (int i = 0; i < json.size(); i++) {
   // 遍历 jsonarray 数组,把每一个对象转成 json 对象
   JSONObject job = json.getJSONObject(i);
   System.out.println(job);
  // 得到每个对象中的属性值
  System.out.println("name:"+job.get("name")+" ,value:"+job.get("value"));
  }
}
输出结果:
{"name":"a","value":"aa"}
name:a ,value:aa
{"name":"b","value":"bb"}
name:b ,value:bb
{"name":"c","value":"cc"}
name:c ,value:cc
5.遍历 JSONObject
JSONObject json = new JSONObject();JSONArray jsonArray = new JSONArray();json.put("key1", "value1");//JSONObject 对象中添加键值对json.put("key2", "value2");//JSONObject 对象中添加键值对Iterator it = json.keys();while (it.hasNext()) {String key = (String) it.next();String value = json.getString(key);System.out.println(value);//value1  value2

6.思考:[{name1:{name2:{name3:'value1',name4:'value2'}}},{}] 如何取出 name4 的值?

对于json嵌套,只要记住符号“:”前是键,符号后是值大括号成对找,一层层剥开,就清楚了.
例子中就是一个数组,数组里面是两个json格式的字符串。
取出name4值过程步骤:
1,将以上字符串转换为JSONArray对象;
2,取出对象的第一项,JSONObject对象;
3,取出name1的值JSONObject对象;
4,取出name2的值JSONObject对象;
5,取出name4的值value2。

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

  JSONArray.fromObject(String)

  1. JSONArray getJsonArray=JSONArray.fromObject(arrayStr);//将结果转换成JSONArray对象的形式
  2. JSONObject getJsonObj = getJsonArray.getJSONObject(0);//获取json数组中的第一项
  3. String result=(String)getJsonObj.getJSONObject("name1").getJSONObject("name2").get("name4");
7.用法示例补充:
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;public class Test {// 创建 JSONObject 对象private static JSONObject createJSONObject(){JSONObject json = new JSONObject();json.put("username", "粉红猪小妹");//JSONObject 对象中添加键值对json.put("sex", "女");//JSONObject 对象中添加键值对json.put("QQ", "528528");json.put("nickName", "小猪佩奇");return json;}public static void main(String[] args) {// 静态方法,直接通过类名+方法调用JSONObject jsonObject = Test.createJSONObject();// 输出 jsonObject 对象System.out.println("jsonObject:"+jsonObject);// 判断输出对象的类型boolean isArray = jsonObject.isArray();boolean isEmpty = jsonObject.isEmpty();boolean isNullObject = jsonObject.isNullObject();System.out.println("是否为数组:"+isArray+",是否为空:"+isEmpty+",isNullObject:"+isNullObject);// 添加属性,在 jsonObject 后面追加元素jsonObject.element("address", "阿里");System.out.println("添加属性后的对象 jsonObject:"+jsonObject);// 返回一个 JSONArray 对象JSONArray jsonArray = new JSONArray();jsonArray.add(0, "this is a jsonArray value");jsonArray.add(1, "another jsonArray value");jsonObject.element("jsonArray", jsonArray);// 在 jsonObject 后面加一个 jsonArrayJSONArray array = jsonObject.getJSONArray("jsonArray");System.out.println(jsonObject);System.out.println("返回一个 JSONArray 对象:"+array);// 添加 jsonArray 后的值System.out.println("结果 = "+jsonObject);// 根据 key 返回一个字符串String username = jsonObject.getString("username");System.out.println("username ==> "+username);// 把字符串转换为 JSONObjectString temp = jsonObject.toString();JSONObject object = JSONObject.fromObject(temp);// 转换后根据key返回值System.out.println("qq = "+object.get("QQ"));}
}
返回结果:
jsonObject:{"username":"粉红猪小妹","sex":"女","QQ":"528528","nickName":"小猪佩奇"}
是否为数组:false,是否为空:false,isNullObject:false
添加属性后的对象 jsonObject:{"username":"粉红猪小妹","sex":"女","QQ":"528528","nickName":"小猪佩奇","address":"阿里"}
{"username":"粉红猪小妹","sex":"女","QQ":"528528","nickName":"小猪佩奇","address":"阿里","jsonArray":["this is a jsonArray value","another jsonArray value"]}
返回一个 JSONArray 对象:["this is a jsonArray value","another jsonArray value"]
结果 = {"username":"粉红猪小妹","sex":"女","QQ":"528528","nickName":"小猪佩奇","address":"阿里","jsonArray":["this is a jsonArray value","another jsonArray value"]}
username ==> 粉红猪小妹
qq = 528528

JSONObject 与 JSONArray相关推荐

  1. JSONObject 和 JSONArray 获取value 的方法

    JSONObject 和 JSONArray 获取value 值 主要是根据key 值来获取的,使用方法是get() 或者getJSONObject 方法很简单 下面列举几个例子,大家可以参考下代码 ...

  2. 1.JSONObject与JSONArray的使用

    参考文献: http://blog.csdn.net/huangwuyi/article/details/5412500 1.JAR包简介 要使程序可以运行必须引入JSON-lib包,JSON-lib ...

  3. android 读取json数据(遍历JSONObject和JSONArray)

    android 读取json数据(遍历JSONObject和JSONArray) public String getJson(){ String jsonString = "{\" ...

  4. Json-lib使用——JSONObject与JSONArray

    1.从Object到String  要先用Object对象构造一个JSONObject或者JSONArray对象,然后调用它的toString()方法即可 (1)示例一 1 Book book=new ...

  5. Java学习笔记50:JSONObject与JSONArray的使用

    Java不像PHP解析和生产JSON总是一个比较痛苦的过程.但是使用JSONObject和JSONArray会让整个过程相对舒服一些. 需要依赖的包:commons-lang.jar commons- ...

  6. fastjson 判断是否包含_Fastjson, Gson, org.json.JSON三者对于JSONObject及JSONArray的判断

    1.Fastjson 我们通常在已知格式的情况下直接使用JSONObject,JSONArray,但是如果遇到需要判断格式呢? try{ Object object=JSON.parse(a);if ...

  7. Json格式的解析,JsonObject、JSONArray

    1.将json字符串转成json格式 com.alibaba.fastjson.JSONObject object = JSONArray.parseObject(newJson); 2.根据属性获取 ...

  8. JSON解析之JSONObject与JSONArray的使用

    一.应用场景 1.后台的java类,如实体类.List.Set.Map转成json字符串发送到前端或其他项目 2.前端或者其它项目发送过来的json字符串,需要解析成实体类.List.Set.Map等 ...

  9. JSON的三种解析方式以及JSONObject、JSONArray区别

    JSON的常用两种解析方式 一.什么是JSON? JSON是一种取代XML的数据结构,和xml相比,它更小巧但描述能力却不差,由于它的小巧所以网络传输数据将减少更多流量从而加快速度. JSON就是一串 ...

最新文章

  1. 说实话,Intellij IDEA 自带的 Vim 插件真心不错!
  2. 计算机硬盘位显示none,开机找不到硬盘Detecting Primary Master... None
  3. 企业千人千面管理模式_零售企业该如何打造“千人千面”的差异化营销?
  4. 读”SQL Injection Pocket Reference”之摘录
  5. 前端学习(1499):组件特点
  6. 基于 Tracing 数据的拓扑关系生成原理
  7. 兰州市中考会考计算机考试,2016兰州中考体育26日开考 采用全套智能测试仪器...
  8. mysql 索引的简单使用
  9. dede image.class.php,DEDE模板下载织梦DEDE 核心类TypeLink.class.php功能剖析
  10. delphixe2 SIZE_T=NativeUInt类型
  11. php中的解析范围符,PHP 范围解析操作符(::)用法分析【访问静态成员和类常量】...
  12. Qt富文本编辑器QTextDocument
  13. 【Java从0到架构师】项目实战 - 驾考(旧)- Freemarker、MyBatis-Plus
  14. python前端和后端_python是用于前端还是后端开发
  15. 西威变频器avo下载调试资料_双色图解变频器及软起动器控制线路
  16. JavaScript零基础入门 11:JavaScript实现图片上传并预览
  17. 宾馆酒店客房管理系统java源码
  18. 因果分析:原理、方法论、应用
  19. DAVIS2016+Matlab+Win10使用指南
  20. wordpress漏洞工具_WordPress自由职业者,设计师和开发人员的43种顶级工具

热门文章

  1. 退出全屏快捷键Linux,linux清除全屏快捷键(Ctrl+L)
  2. LeetCode 整数转罗马数字
  3. CF Edu 47E. InterCity Travelling 期望线性,打表
  4. HPB:HPB开发节点搭建指南
  5. 1400. 构造 K 个回文字符串
  6. explorer系统调用失败
  7. android基础笔记
  8. 【嵌入式系统】独立看门狗原理+看门狗实验分析
  9. 灰度共生矩阵(超简单理解)
  10. 华为nova10pro参数配置 华为nova10pro是5g手机吗