阿里巴巴的fastjson 之JSONObject实际使用以及JSONArray与JSONObject互换
一:最近有一个大部分 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=张小宝}
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":"张小宝"}
#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博"}
#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);
#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博

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":"王一博"}}

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"}
#二: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);
posted on 2021-12-04 19:37 夜空中闪闪发光的星星 阅读(2675) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)