JSONObject 与 JSONArray

转载网址: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 后面加一个 jsonArray
		JSONArray 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);
		// 把字符串转换为 JSONObject
		String 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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值