java中 JSONObject与JSONArray的使用方法

public static void main(String[] args) {

        // 创建一个JSONObject对象
        JSONObject jsonObject1 = new JSONObject();

        // Map 与 JSONObject 相互转换
        Map<String, String> map1 = new HashMap<String, String>();
        map1.put("we", "dsds");
        JSONObject jsonObject2 = JSONObject.fromObject(map1);
        Map<String, String> map2 = (Map)JSONObject.toBean(jsonObject2, Map.class);

       // 字符串 转 JSONObject
        JSONObject jsonObject3 = JSONObject.fromObject("{obj: [{name: 'wwp'}, {age: 22}], obj: 2}");

        //put() 和 get() 方法
        jsonObject2.put("key", "sds");
        //注意:如果键不存在,则抛出异常
        jsonObject2.get("key");  
public class JSONtest {  


    public static void main(String args[]){  

        //创建一个JSONObject对象
        JSONObject jsonObject = new JSONObject();  
        jsonObject.put("key1", "value1");  
        jsonObject.put("key2", "value2");  
        jsonObject.put("key3", "value3");  
        jsonObject.put("key4", "value4");  
        System.out.println("jsonObject:"+jsonObject);  

        //创建一个JSONArray对象  
        JSONArray jsonArray=new JSONArray();  
        jsonArray.add("value1");  
        jsonArray.add("value2");  
        jsonArray.add("value3");  
        jsonArray.add("value4");  
        System.out.println("jsonArray:"+jsonArray);  


        //Map转成JSONObject  
        Map<String, String> map=new HashMap<String, String>();  
        map.put("key1", "value1");  
        map.put("key2", "value2");  
        map.put("key3", "value3");  
        map.put("key4", "value4");  
        System.out.println("jsonObject2:"+JSONObject.fromObject(map));        

        //List转成JsonArray  
        List<String> list=new ArrayList<String>();  
        list.add("value1");  
        list.add("value2");  
        list.add("value3");  
        System.out.println("jsonArray2:"+JSONArray.fromObject(list));  

        //JsonArray解析map,会将整个json对象放进数组。  
        System.out.println("jsonArray from map:"+JSONArray.fromObject(map));  

        //将JSONObject放入JsonArray  
        JSONObject jsonObject3=new JSONObject();  
        jsonObject3.put("姓名", "张三");  
        jsonObject3.put("年龄", "13");  
        jsonObject3.put("身高", "166");  
        System.out.println("将JSONObject放入JsonArray:"+JSONArray.fromObject(jsonObject3));  

    }  

}  

打印输出

jsonObject:{"key4":"value4","key3":"value3","key2":"value2","key1":"value1"}
jsonArray:["value1","value2","value3","value4"]
jsonObject2:{"key4":"value4","key3":"value3","key2":"value2","key1":"value1"}
jsonArray2:["value1","value2","value3"]
jsonArray from map:[{"key4":"value4","key3":"value3","key2":"value2","key1":"value1"}]
将JSONObject放入JsonArray:[{"姓名":"张三","身高":"166","年龄":"13"}]

put,accumulate,element的区别
public Object put (Object key, Object value) 将value映射到key下。如果此JSONObject对象之前存在一个value在这个key下,当前的value会替换掉之前的value

[java] view plain copy
JSONObject jsonObject = new JSONObject();  
jsonObject.put("key1", "value1");  
jsonObject.put("key2", "value2");  
jsonObject.put("key2", "value2");  
jsonObject.put("key4", "value4");  
System.out.println("jsonObject:"+jsonObject);  

输出:

jsonObject:{"key4":"value4","key2":"value2","key1":"value1"}

发现key2被覆盖了。

public JSONObject accumulate (String key, Object value) 累积value到这个key下。这个方法同element()方法类似,特殊的是,如果当前已经存在一个value在这个key下那么一个JSONArray将会存储在这个key下来保存所有累积的value。如果已经存在一个JSONArray,那么当前的value就会添加到这个JSONArray中。相比之下replace方法会替代先前的value,代码如下

[java] view plain copy
JSONObject jsonObject = new JSONObject();  
jsonObject.accumulate("key1", "value1");  
jsonObject.accumulate("key2", "value2");  
jsonObject.accumulate("key2", "value2");  
jsonObject.accumulate("key4", "value4");  
System.out.println("jsonObject:"+jsonObject);  

输出:

jsonObject:{"key4":"value4","key2":["value2","value2"],"key1":"value1"} 

value积累到key2下, key2的值为数组。

public JSONObject element (String key, Object value) 将键/值对放到这个JSONObject对象里面。那么如果这个key存在,当前value为空(null),这个key就会移除掉。如果这个key之前有value值,那么此方法会调用accumulate()方法。这个是官方文档的说法,但是通过做实验发现并没有调用accumulate()方法,如果key重复,则直接覆盖。代码如下:

[java] view plain copy
JSONObject jsonObject = new JSONObject();  
jsonObject.element("key1", "value1");  
jsonObject.element("key2", "value2");  
jsonObject.element("key2", "value2");  
jsonObject.element("key2", "value4");  
System.out.println("jsonObject:"+jsonObject);  

输出:

jsonObject:{"key2":"value4","key1":"value1"}

key2被覆盖,并没有累积。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值