转载网址: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. favicon自动获取_友情链接前面自动获取并添加favicon.ico小图标
  2. Java代码判断数据库中某张表是否存在
  3. 表格列mouse经过时高亮显示
  4. ASP.NET Core MVC Tag Helpers 介绍
  5. python rsa加密二进制文件_用Python中的RSA加密文件
  6. caffe各种依赖包配置
  7. matlab中的terminator模块,2.2 Ground 及 Terminator模块
  8. [Android-Appium]: 安卓自动化测试: 环境准备
  9. 错误:在keystone中无法找到默认角色user_Kubernetes RBAC角色权限控制
  10. java_web学习(六) request对象中的get和post差异
  11. 01 按指定格式读写文件出现乱码
  12. 蓝桥杯第八届省赛本科B组C/C++第九题 分巧克力
  13. 最大连续区间和算法详解+代码
  14. C# 自定义网格 dataGridView 禁止编辑 + 禁止自动生成新列 + 禁止生成新行 + 禁止删除行 + 禁止多选 + 禁止行选中 + 禁止改变列宽度 行高度
  15. sigmoid 激励函数
  16. 献给2012——易水寒的心声
  17. Python OpenCV _1基本操作(画图,循环播放图像,鼠标事件,读取中文路径中的图片)
  18. VR广告:通过“虚拟房间”广告在VR中体验Lionsgate的JIGSAW
  19. 在沟通管理中,如何给予有效的反馈意见? | 每天成就更大成功
  20. 中鑫优配股票配资平台的保障

热门文章

  1. 关于BufferedReader的read()及readLine()
  2. Uber 要给乘客打分,评分低车费高!《黑镜》社交评分一语成谶
  3. 《Multiple UAV exploration of an unknown region》翻译
  4. pwnable.krToddlr’s Bottle题解3
  5. qq 飞信中无法切换输入法
  6. Centos7 rpm命令大全
  7. 站长说说之SEO优化诊断 如何更好做关键词排名优化
  8. LeetCode练习题C#源码
  9. Benewake(北醒) 短距 TF-Luna 8m介绍以及资料整理
  10. java 微秒 时间_Java中的当前时间(以微秒为单位)