关于fastjson中JSONArray和JSONObject的区别?

本文详细介绍了JSONArray和JSONObject在Java中的用法,包括它们的语法、转换过程以及底层实现。重点讲解了JSONArray作为包含JSONObject对象的集合,以及如何通过遍历操作数据。同时探讨了为何提供getJSONObject方法获取JSONObject对象的实际用途。
  • JSONArray的语法:[{ "id":1001,"name":"Tom" },{ "id":1002,"name":"John"},{ "id":"1003","name":"Jack"}],相当于一个list中包含了多个对象json数据
  • JSONObject的语法:{ "id":1001,"name":"Tom" },相当于一个对象json数据
  • 一个JSONArray对象中包含了多个JSONObject数据,可以将JSONArray遍历得到每个JSONObject对象

 JSONObject 示例:

  • 首先添加fastJson依赖

  • 首先创建一个Map集合,并且添加一些数据 

 

  • 将集合转换为JSON格式字符串

 

  • 将JSON格式字符串转换为JSONObject对象

 

  • 我们发现JSONObject的 map 方法与Map集合的方法类似,因为他底层实现了Map接口,点进源码进行查看

 

  • 发现确实实现了 Map 接口,并且 put 方法是间接调用了 Map 的 put 方法,由此可见JSONObject 底层确实实现了 Map 集合接口

 

JSONArray 示例:

  • 首先创建几个 map集合并添加一些数据,将这些 map添加到 list 集合中

 

  • 将 list 集合转换为 json 字符串再转换为 JSONArray 对象
  • 遍历此集合,发现了一个又熟悉的方法size(),这我们又不由得猜想和list集合有没有关系,于是点进源码查看

  • 发现确实实现了List集合,并且属性为list集合 
  • 所以我们使用遍历list集合的方式来遍历JSONArray对象

 

  • 那问题来了,为什么每个元素是Object,又提供一个getJSONObject()方法来获得JSONObject对象呢?
    • 因为前面也说了,JSONObject对象底层为Map集合,当我们获得JSONObject对象时,可以使用键值对的方法来获得数据,这样再实际开发中方便不少类型转换操作
    • 另外在有些项目设计中,从数据库取出的数据集合,是以List<Map<String,Object>>这种方式保存的,所以使用JSONObject可以更好的操作数据
  • 实践一下,发现确实可以

 

第一次写文章,有的地方还不足,希望大家理解!!!

### JSONArray 是否可以包含 JSONObject? 是的,`JSONArray` 可以包含 `JSONObject`。在 JSON 数据结构中,数组不仅可以存储基本数据类型(如字符串、数字、布尔值等),还可以存储对象类型,即 `JSONObject`。这种能力使得 JSON 能够表示复杂的嵌套结构,适用于多种数据交换存储场景[^1]。 例如,在 FastJSON 或其他常见的 JSON 库中,可以通过 `add` 方法将 `JSONObject` 添加到 `JSONArray` 中。以下是一个典型的实现方式: ```java import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; public class JsonExample { public static void main(String[] args) { // 创建 JSONArray JSONArray jsonArray = new JSONArray(); // 创建第一个 JSONObject JSONObject jsonObject1 = new JSONObject(); jsonObject1.put("name", "Alice"); jsonObject1.put("age", 25); // 创建第二个 JSONObject JSONObject jsonObject2 = new JSONObject(); jsonObject2.put("name", "Bob"); jsonObject2.put("age", 30); // 将 JSONObject 添加到 JSONArrayjsonArray.add(jsonObject1); jsonArray.add(jsonObject2); // 输出 JSON 数组 System.out.println(jsonArray.toJSONString()); } } ``` 运行结果如下: ```json [ {"name":"Alice","age":25}, {"name":"Bob","age":30} ] ``` 上述代码展示了如何将多个 `JSONObject` 添加到 `JSONArray` 中,并输出一个结构清晰的 JSON 数组[^3]。 ### 注意事项 - **嵌套结构**:`JSONArray` 中的 `JSONObject` 可以进一步包含 `JSONArray` 或其他 `JSONObject`,从而构建多层次的嵌套结构。 - **数据一致性**:确保添加到数组中的对象具有相似的结构,以避免解析时出现错误。 - **性能优化**:在处理大量数据时,应合理管理内存使用,避免不必要的对象创建。 ### 总结 `JSONArray` 支持包含 `JSONObject`,这种特性使得 JSON 结构可以表示复杂的数据模型,广泛应用于数据传输、配置文件、API 响应等场景[^2]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值