赞
踩
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.48</version>
</dependency>
JSONobject实际上是一个私有的常量封装的map, 如下:
private final Map<String, Object> map;
1.put(String key, Object value),key是唯一的,value不唯一。当多次设置key的value时,会保存为最后一个value.
2.Object get(String key) 根据key获取value的值,获取到的值object,要手动转换为自己需要的值。
当然使用String getString(String key) 获取key的value值类型是String的,意思就是:我要获取这个key的value,而且我知道他的类型是String,快给我值。。。
既然可以这个做,那么 Integer getInteger(Integer key)当然可以,意思就是:我要获取这个key的value,而且我知道他的类型是Integer,快给我值。。。
其他类型,date,boolean,byte…,自己发掘吧。注意,你找的该类型的value的key不存在时,会报错。
3.int size(),获取该JSONobject中键值对数量。
4.boolean isEmpty(),判断JSONobject是否为空。
5.boolean containsKey(Object key),判断是否有该key
6.boolean containsValue(Object value),判断是否有该value
7.JSONObject getJSONObject(String key),获取JSONObject中键为key的JSONObject。
8.JSONArray getJSONArray(String key),获取JSONObject中键为key的JSONArray。
9.Object remove(Object key),清除掉该键值对。
package com.xiaoqi.methods.utils; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Set; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.serializer.SerializerFeature; public class JsonObjectJS { private int sum; private String name; public int getSum() { return sum; } public void setSum(int sum) { this.sum = sum; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "{sum=" + sum + ", name=" + name + "}"; } //克隆单体 public static Object cloneObject(Object object){ return JSONObject.parseObject(JSONObject.toJSONString(object),object.getClass()); } //克隆集合 public static Object cloneArray(Object object){ return JSONArray.parseObject(JSONArray.toJSONString(object),object.getClass()); } //自定义分割线方法 public static String flagString(){ String a = "* "; String back = ""; for(int i = 0;i<50;i++){ back = back+a; } return back; } public static void main(String[] args) { JSONObject jsonobject = new JSONObject(); JSONObject injson = new JSONObject(); JSONArray jsonarray = new JSONArray(); jsonobject.put("sum", 10); jsonobject.put("name", "北京"); jsonobject.put("injson", injson); jsonobject.put("jsonarray", jsonarray); System.out.println(jsonobject); System.out.println(jsonobject.toJSONString()); System.out.println(jsonobject.toString()); System.out.println(flagString()); /** * 10.将JSONObject转为实例对象 */ JsonObjectJS js = JSONObject.parseObject(jsonobject.toJSONString(), JsonObjectJS.class); System.out.println("将JSONObject转为实例对象: "+js.toString()); System.out.println(flagString()); /** * 11.JSONArray转换为实例对象数组 */ JSONArray array = new JSONArray(); array.add(jsonobject); array.add(jsonobject); List<JsonObjectJS> jslist = JSONObject.parseArray(array.toJSONString(), JsonObjectJS.class); System.out.println("JSONArray转换为实例对象数组: "+jslist.toString()); System.out.println(flagString()); /** * 12.java对象转JsonObject */ JSONObject object2 = (JSONObject) JSONObject.toJSON(js); System.out.println("java对象转JsonObject: "+object2.toJSONString()); System.out.println(flagString()); /** * 13.java对象数组转为JSONArray */ JSONArray array2 = (JSONArray) JSONArray.toJSON(jslist); System.out.println("java对象数组转为JSONArray: "+array2.toJSONString()); System.out.println(flagString()); /** * 14.java对象转为json字符串 */ String str1 = JSONObject.toJSONString(js); System.out.println("java对象转为json字符串: "+str1); System.out.println(flagString()); /** * 15.java集合转为json字符串 */ String str2 = JSONArray.toJSONString(jslist); //显然重复引用对象照成问题 System.out.println("java集合转为json字符串: "+str2); System.out.println(flagString()); //修改代码拒绝重复引用 str2 = JSONArray.toJSONString(jslist, SerializerFeature.DisableCircularReferenceDetect); System.out.println("拒绝重复引用:java集合转为json字符串: "+str2); System.out.println(flagString()); /** * 16.使用JSONObject深度克隆对象 */ JsonObjectJS jscloneafter = (JsonObjectJS) cloneObject(js); JsonObjectJS newjs = js; System.out.println("源对象: "+js.toString()); System.out.println("new出来的对象: "+newjs.toString()); System.out.println("深度克隆出来的对象: "+jscloneafter.toString()); System.out.println(flagString()); System.out.println("源对象hashcode: "+js.hashCode()); System.out.println("new出来的对象hashcode: "+newjs.hashCode()); System.out.println("深度克隆出来的对象hashcode: "+jscloneafter.hashCode()); System.out.println(flagString()); //new出的新对象,hashcode没变,可以说是内存地址没变,当然属性变量的值一样,所以equals比较为true, System.out.println("源对象与new出来的对象equals比较: "+js.equals(newjs)); //深度克隆后,新对象虽然和源对象变量的值一样,但是hashcode不同,也可以说是内存地址不同,所以equals比较为false; System.out.println("源对象与深度克隆出来的对象equals比较: "+js.equals(jscloneafter)); System.out.println(flagString()); System.out.println(flagString()); /** * 17.使用JSONObject克隆集合 */ @SuppressWarnings("unchecked") List<JsonObjectJS> jslistcloneafter = (List<JsonObjectJS>) cloneArray(jslist); List<JsonObjectJS> newjslist =jslist; System.out.println("源集合: "+jslist.toString()); System.out.println("new出来的集合: "+newjslist.toString()); System.out.println("深度克隆出来的集合: "+jslistcloneafter.toString()); System.out.println(flagString()); System.out.println("源集合hashcode: "+jslist.hashCode()); System.out.println("new出来的集合hashcode: "+newjslist.hashCode()); System.out.println("深度克隆出来的集合hashcode: "+jslistcloneafter.hashCode()); System.out.println(flagString()); //new出的新集合,hashcode没变,可以说是内存地址没变,当然属性变量的值一样,所以equals比较为true, System.out.println("源集合与new出来的集合equals比较: "+jslist.equals(newjslist)); //深度克隆后,新集合虽然和源集合变量的值一样,但是hashcode不同,也可以说是内存地址不同,所以equals比较为false; System.out.println("源集合与深度克隆出来的集合equals比较: "+jslist.equals(jslistcloneafter)); System.out.println(flagString()); /** * 18.取得JSONObject对象中key的集合 */ Set<String> keySet= jsonobject.keySet(); for (String key : keySet) { System.out.println("key "+key); } System.out.println(flagString()); /** * 19.取得JSONObject对象中的键和值的映射关系 */ Set<Map.Entry<String, Object>> entrySet = jsonobject.entrySet(); for (Entry<String, Object> entry : entrySet) { System.out.println("entry "+entry); } } }
{"injson":{},"jsonarray":[],"name":"北京","sum":10} {"injson":{},"jsonarray":[],"name":"北京","sum":10} {"injson":{},"jsonarray":[],"name":"北京","sum":10} * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 将JSONObject转为实例对象: {sum=10, name=北京} * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * JSONArray转换为实例对象数组: [{sum=10, name=北京}, {sum=10, name=北京}] * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * java对象转JsonObject: {"injson":{},"jsonarray":[],"name":"北京","sum":10} * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * java对象数组转为JSONArray: [{"name":"北京","sum":10},{"name":"北京","sum":10}] * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * java对象转为json字符串: {"name":"北京","sum":10} * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * java集合转为json字符串: [{"name":"北京","sum":10},{"$ref":"$[0]"}] * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 拒绝重复引用:java集合转为json字符串: [{"name":"北京","sum":10},{"name":"北京","sum":10}] * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 源对象: {sum=10, name=北京} new出来的对象: {sum=10, name=北京} 深度克隆出来的对象: {sum=10, name=北京} * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 源对象hashcode: 242131142 new出来的对象hashcode: 242131142 深度克隆出来的对象hashcode: 476800120 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 源对象与new出来的对象equals比较: true 源对象与深度克隆出来的对象equals比较: false * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 源集合: [{sum=10, name=北京}, {sum=10, name=北京}] new出来的集合: [{sum=10, name=北京}, {sum=10, name=北京}] 深度克隆出来的集合: [{"name":"北京","sum":10}, {"name":"北京","sum":10}] * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 源集合hashcode: -1360886495 new出来的集合hashcode: -1360886495 深度克隆出来的集合hashcode: 123497377 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 源集合与new出来的集合equals比较: true 源集合与深度克隆出来的集合equals比较: false * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * key injson key jsonarray key name key sum * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * entry injson={} entry jsonarray=[] entry name=北京 entry sum=10
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。