一:最近有一个大部分 json 处理的项目,以下是项目中实际使用的进行总结,当然肯定也有参考网上不少优秀的博主的文章:
#1:Java 对象与 JSON字符串 相互转换
parseObject(): 则反过来将 JSON 字符串转换成java对象。 eg:
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:
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
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
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() : 获取对象中所有键值对。
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对象
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 数据类型
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 中常用的方法。
1 //将字符串转JSONArray 类型
2 JSONArray objects = JSONArray.parseArray("");
3 //将字符串转其他 类型
4 List<List> lists = JSONArray.parseArray("", List.class);
View Code