一:最近有一个大部分 json 处理的项目,以下是项目中实际使用的进行总结,当然肯定也有参考网上不少优秀的博主的文章

#1:Java 对象与 JSON字符串 相互转换
    parseObject(): 则反过来将 JSON 字符串转换成java对象。 eg:

java fastjson转换嵌套对象为空 fastjson java对象转jsonobject_Code

java fastjson转换嵌套对象为空 fastjson java对象转jsonobject_Code_02

1         User user1 = new User();
 2         user1.setPhone("17312655215");
 3         user1.setUserName("王一博");
 4         String user = com.alibaba.fastjson.JSONObject.toJSONString(user1);
 5         User user2 = com.alibaba.fastjson.JSONObject.parseObject(user, User.class);
 6         System.out.println("获取到的user2: " + user2);
 7         //result: 获取到的user2: User(userId=null,userName=王一博, phone=17312655215)
 8         //示例2
 9         Map<String, String> hashMap = new HashMap<>();
10         hashMap.put("1", "王大宝");
11         hashMap.put("2", "李二宝");
12         hashMap.put("3", "张小宝");
13         String hashMapJson = JSONObject.toJSONString(hashMap);
14         HashMap hashMap1 = JSONObject.parseObject(hashMapJson, HashMap.class);
15         System.out.println("hashMap: " + hashMap1);
16         //result: hashMap: {1=王大宝, 2=李二宝, 3=张小宝}

View Code

    toJSONString(): 可将java对象转换成 JSON 字符串。eg:

java fastjson转换嵌套对象为空 fastjson java对象转jsonobject_Code

java fastjson转换嵌套对象为空 fastjson java对象转jsonobject_Code_02

1         User user1 = new User();
 2         user1.setPhone("17312655215");
 3         user1.setUserName("王一博");
 4         String user = com.alibaba.fastjson.JSONObject.toJSONString(user1);
 5         //result:jsonobject:{"1":"王一博","2":"王二博","3":"王三博"}
 6 示例2:
 7         Map<String, String> hashMap = new HashMap<>();
 8         hashMap.put("1", "王大宝");
 9         hashMap.put("2", "李二宝");
10         hashMap.put("3", "张小宝");
11         String hashMapJson = JSONObject.toJSONString(hashMap);
12         System.out.println("hashMap实验:" + hashMapJson);
13         //result: hashMap实验:{"1":"王大宝","2":"李二宝","3":"张小宝"}

View Code

#2:存值put(String,Object) 、根据key删除元素remove()。eg

java fastjson转换嵌套对象为空 fastjson java对象转jsonobject_Code

java fastjson转换嵌套对象为空 fastjson java对象转jsonobject_Code_02

1         JSONObject jsonObject = new JSONObject();
 2         jsonObject.put("1", "王一博");
 3         jsonObject.put("2", "王二博");
 4         jsonObject.put("3", "王三博");
 5         System.out.println("jsonobject:" + jsonObject);
 6         //result:jsonobject:{"1":"王一博","2":"王二博","3":"王三博"}
 7         
 8         System.out.println("移除前的数据:jsonObject " + jsonObject);
 9         //result: 移除前的数据:jsonObject {"1":"王一博","2":"王一博","3":"王三博","4":"four博"}
10         Object remove = jsonObject.remove("1");
11         System.out.println("移除的数据:remove" + remove);
12         //result: 移除的数据:remove王一博
13         System.out.println("移除后的数据:jsonObject " + jsonObject);
14         //result: jsonObject {"2":"王一博","3":"王三博","4":"four博"}

View Code

 #3:获取值、查询个数、判断JSONobject对象是否为空、是否包含key、是否包含value

java fastjson转换嵌套对象为空 fastjson java对象转jsonobject_Code

java fastjson转换嵌套对象为空 fastjson java对象转jsonobject_Code_02

1         JSONObject jsonObject = new JSONObject();
 2         jsonObject.put("1", "王一博");
 3         jsonObject.put("2", "王一博");
 4         jsonObject.put("3", "王三博");
 5         jsonObject.put("4", "four博");
 6         String userName = jsonObject.getString("1");
 7         System.out.println("userName:" + userName);
 8         //result: userName:王一博
 9 
10         int size = jsonObject.size();
11         System.out.println("个数:" + size);
12         //result:个数:4
13 
14         boolean isEmpty = jsonObject.isEmpty();
15         System.out.println("isEmpty():" + isEmpty);
16         //result: isEmpty():false
17 
18         boolean isContainsKey = jsonObject.containsKey("1");
19         System.out.println("isContainsKey():" + isContainsKey);
20         //result: isContainsKey():true
21 
22         boolean isContainsValue = jsonObject.containsValue("王一博");
23         System.out.println("isContainsValue():" + isContainsValue);

View Code

 #4: keySet(): 获取对象中的所有key。entrySet() : 获取对象中所有键值对。

java fastjson转换嵌套对象为空 fastjson java对象转jsonobject_Code

java fastjson转换嵌套对象为空 fastjson java对象转jsonobject_Code_02

1         JSONObject jsonObject = new JSONObject();
 2         jsonObject.put("1", "王一博");
 3         jsonObject.put("2", "王一博");
 4         jsonObject.put("3", "王三博");
 5         jsonObject.put("4", "four博");
 6 
 7         //keySet:获取对象中所有的key
 8         Set<String> strings = jsonObject.keySet();
 9         for (String key : strings) {
10             System.out.print("   " + key);
11         }
12         //result:    1   2   3   4
13         System.out.println();
14         //entrySet():在循环遍历时使用,取得是键和值的映射关系,Entry就是Map接口中的内部接口 与String字符串转换:
15         Set<Map.Entry<String, Object>> entrySet = jsonObject.entrySet();
16         for (Map.Entry<String, Object> entry : entrySet) {
17             System.out.println(entry);
18         }
19         //result : 1=王一博、2=王一博、3=王三博、4=four博

View Code

#5:JSONObject 中包含 JSONObject 对象,或者包含JSONArray对象

java fastjson转换嵌套对象为空 fastjson java对象转jsonobject_Code

java fastjson转换嵌套对象为空 fastjson java对象转jsonobject_Code_02

1         //8.如果JSONObject对象中的value是一个JSONObject数组,既根据key获取对应的JSONObject数组;
 2         JSONObject objectArray = new JSONObject();
 3         //创建JSONArray数组
 4         JSONArray jsonArray = new JSONArray();
 5         //在JSONArray数组设值:jsonArray.add(int index, Object value);
 6         jsonArray.add(0, "this is a jsonArray value");
 7         jsonArray.add(1, "another jsonArray value");
 8         objectArray.put("testArray", jsonArray);
 9         //获取JSONObject对象中的JSONArray数组
10         JSONArray jsonArray2 = objectArray.getJSONArray("testArray");
11         System.out.println(jsonArray2);
12 
13         //9: JSONObjct对象中的value是一个JSONObject对象,即根据key获取对应的JSONObject对象;
14         JSONObject json1 = new JSONObject();
15         JSONObject user1 = new JSONObject();
16         user1.put("1", "17312655215");
17         user1.put("2", "王一博");
18         json1.put("test", user1);
19         System.out.println("JSONObjct:" + json1);
20         String test = json1.getString("test");
21         System.out.println("test:" + test);
22         //result: JSONObjct:{"test":{"1":"17312655215","2":"王一博"}}

View Code

#6: toJavaObject(): 将JSON 数据类型转 java 数据类型

java fastjson转换嵌套对象为空 fastjson java对象转jsonobject_Code

java fastjson转换嵌套对象为空 fastjson java对象转jsonobject_Code_02

1       JSONObject jsonObject = new JSONObject();
 2         jsonObject.put("1", "今天是2021.12.5");
 3         jsonObject.put("2", "今天是2021.12.6");
 4         jsonObject.put("3", "今天是2021.12.7");
 5         jsonObject.put("4", "今天是2021.12.8");
 6 
 7 
 8         //toJavaObject(JSON json, Class<T> clazz);
 9         Map map = JSONObject.toJavaObject(jsonObject, Map.class);
10         System.out.println("map是:" +map);
11         //result: map是:{"1":"今天是2021.12.5","2":"今天是2021.12.6","3":"今天是2021.12.7","4":"今天是2021.12.8"}

View Code

 #二:JSONObject和JSONArray的数据表示形式

#1: JSONObject的数据是用  { }  来表示。都是以 key-value 形式出现的Map结构

eg: { "id" : "123", "courseID" : "huangt-test", "title" : "提交作业", "content" : null }

 

#2:JSONArray是用  [ { } , { } , ...... , { } ]  来表示。都是以 json 形式出现的 List 数组结构

eg: [ { "id" : "123", "courseID" : "huangt-test", "title" : "提交作业" } , { "content" : null, "beginTime" : 1398873600000 "endTime" } ] ;

    总结:java 中的 List 或者 Map 分别对应的是 JSONArray 和 JSONObject。

 

#3 JSONOject和JSONArray()方法如何互换

JSONObject对象的getJSONArray(key)方法获取到一个JSONArray对象,再调用JSONArray对象的get(i)方法获取数组元素,i为索引值。
#4:JSONArray 中常用的方法。

java fastjson转换嵌套对象为空 fastjson java对象转jsonobject_Code

java fastjson转换嵌套对象为空 fastjson java对象转jsonobject_Code_02

1         //将字符串转JSONArray 类型
2         JSONArray objects = JSONArray.parseArray("");
3         //将字符串转其他 类型
4         List<List> lists = JSONArray.parseArray("", List.class);

View Code