JAVA Json 学习总结

Json官网

在线Json解析工具

一、Json 概述

简介

       JSON(JavaScript Object Notation, JS 对象标记) ,简写为JSON。是一种轻量级的数据交换格式,目前使用特别广泛。有着让人一目了然的数据格式,让我们在编写和阅读更加容易,也更易于机器解析。

       JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为了理想的数据交换语言。
  • JSON由两种结构组成:

    • 键值对的无序集合——对象(或者叫记录、结构、字典、哈希表、有键列表或关联数组等)
    • 值的有序列表——数组
  • json 的格式:

    • 对象是一个无序键值对的集合,以"{“开始,同时以”}“结束,键值对之间以”:“相隔,不同的键值对之间以”,"相隔,举例
{
    "json1" : 1,
    "json2" : "string",
    "json3" :
            {
             "json3-1" : 1,
             "json3-2" : "string"
            }
}

二、java 处理 json 数据

1、json中的数组和对象

  • 1.数组(JsonArray)
    • 数组用一对[],表示存放的是数组数据。 如:[“1”,“2”,“3”],表示这是一个JSONArray数组。
  • 2.对象(JsonObject)
    • 对象用一对{},来表示其中JSON通用的”键-值“对。如:{“sex1”:“female”,“name0”:“zhangsan”},表示的是一个JSON对象,里面有两组数据(键值对),sex1=female,name0=zhangsan。这里键对应的数据值,也可以是复杂的JSON对象或者数组。

2、JSONArray和JSONObject的常用方法


  • JSONObject 常用方法

    1 解析字符串
    	JSONObject  obj = JSONArray.parseObject(str);
    
    2  存值取值
       (1) 存值
    		 obj.put("key", key);
    		 obj.put("value", value);
    
       (2) 取值
       		 value = obj.get(key);
    
    3String字符串转换
    	    toJSONString() /toString():JSONObject对象转换为json的字符串
    
    4  格式:
    	本质是对象, 用 {} 表示
    	格式:  {key:value}
    	
    

  • JSONArray 常用方法

    1  解析字符串
    	 JSONArray jsonarr = JSONArray.parseArray(str);
    	 
    2  存值取值
    	(1) 存值
         	jsonarr.add(obj);
    
        (2) 取值
    		for(int i =0; i <= jsonarr.size(); i++){
    		 	jsonarr[i].get(key);
    	 	} 
    	
    3   格式: 
    	本质是数组, 必须是数组格式,[ ] 包裹数据 
    	格式:   [{key:value},{key:value}... ]
        	    ["str1","str2","str3",...]
    

3、基本的JSONArray和JSONObject操作

		import net.sf.json.JSONArray;
	    import net.sf.json.JSONObject;
	    
	    public class ObjectAndArray1 {
	        public static void main(String args[])
	        {
	            JSONObject jsonObj  = new JSONObject();
	            jsonObj.put("name0", "zhangsan");
	            jsonObj.put("sex1", "female");
	            System.out.println(jsonObj);    //输出为:{"sex1":"female","name0":"zhangsan"}
	            
	            JSONArray jsonArray = new JSONArray();
	            jsonArray.add("11");
	            jsonArray.add("22");
	            jsonArray.add("33");
	            System.out.println(jsonArray);    //输出为:["11","22","33"]
	        }
	    } 

4、由java自带的数据结构转换为JSON文本

	import java.util.HashMap;
    import java.util.Map;
    import net.sf.json.JSONArray;
    import net.sf.json.JSONObject;
 
    public class ObjectAndArray2{
        public static void main(String args[])
        {
            //可以由数组,列表等生成JSONArray
            String list[]={"11","22"};
            JSONArray jsonarray = JSONArray.fromObject(list); 
            jsonarray.add("33");
            System.out.println(jsonarray);    //输出为:["11","22","33"]
            
            //可以由Map生成JSONObject
            Map<String,Object> map=new HashMap<String,Object>();
            map.put("NO1", "第一个");
            map.put("NO2", "第二个");
            map.put("NO3", jsonarray);
            JSONObject jsonObj  = JSONObject.fromObject(map);
            System.out.println(jsonObj);    //输出为:{"NO3":["11","22","33"],"NO2":"第二个","NO1":"第一个"}
        }
    }

5、读取JSON文件

  • 注意:
    • JSONArray 必须用下标读取内部数据。
    • JSONObject 必须用"键"读取对应的"值"。
	import net.sf.json.JSONArray;
    import net.sf.json.JSONObject;
    
    public class ObjectAndArray {
        public static void main(String args[])
        {
            JSONArray jsonarray;
            JSONObject jsonObj;
            //读取JSONArray,用下标索引获取
            String array="[\"11\",\"22\",\"33\"]";
            jsonarray = JSONArray.fromObject(array); 
            System.out.println(jsonarray.getString(1));    //输出为:22
            
            //读取JSONObject
            String object="{\"NO1\":[\"44\",\"55\",\"66\"],\"NO2\":{\"NO1\":\"第一个\"}}";
            jsonObj  = JSONObject.fromObject(object);
            System.out.println(jsonObj.get("NO1"));    //输出为:["44","55","66"]
            
            jsonarray = (JSONArray)(jsonObj.get("NO1")); 
            System.out.println(jsonarray.getString(1));    //输出为:55
            
            //用"键"获取值
            jsonObj=(JSONObject)jsonObj.get("NO2");
            System.out.println(jsonObj);    //输出为:{"NO1":"第一个"}
            
        }
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值