JSONArray和JSONObject区别
下文笔者讲述JSONArray和JSONObject简介及区别说明,如下所示
JSONArray和JSONObject简介
`JSONArray`和`JSONObject`是 用于处理JSON数据中的两个核心类 通常在Java中使用`org.json`包 或 `com.alibaba.fastjson`包(FastJSON)来处理这些类
JSONArray和JSONObject基本概念
- JSONObject - 定义:表示一个 JSON 对象,由键值对组成。 - 结构:类似于Java中`Map` 键是字符串 值可以是任何JSON数据类型 (包括 `JSONObject`、`JSONArray`、字符串、数字、布尔值等) - 例: { "name": "John", "age": 30, "isStudent": false, "address": { "street": "123 Main St", "city": "Anytown" }, "courses": ["Math", "Science"] } - JSONArray - 定义: 表示一个 JSON 数组,由有序的值组成。 - 结构: 类似于 Java 中的 `list` 可包含任何JSON数据类型 (包括`JSONObject`、`JSONArray`、字符串、数字、布尔值等) - 例 JSONArray [ "Math", "Science", { "name": "John", "age": 30 }, [1, 2, 3] ]
JSONArray和JSONObject区别对比
| 特性 | JSONObject | JSONArray | |------------------------|---------------------------------------------------|-------------------------------------------------| | 数据结构 | 键值对集合(类似 `Map`) | 有序值集合(类似 `List`) | | 键类型 | 字符串 | 无键,通过索引访问元素 | | 值类型 | 任何 JSON 数据类型(字符串、数字、布尔值、`JSONObject`、`JSONArray` 等) | 任何 JSON 数据类型(字符串、数字、布尔值、`JSONObject`、`JSONArray` 等) | | 访问方式 | 通过键访问(如 `obj.getString("name")`) | 通过索引访问(如 `arr.getString(0)`) | | 使用场景 | 表示结构化的数据对象,如用户信息、配置等 | 表示有序的数据集合,如列表、数组等 | | 示例 | `{"name": "John", "age": 30}` | `["John", 30, true]` |
JSONArray和JSONObject常用方法
JSONObject 方法 - 添加/获取键值对 - `put(String key, Object value)`: 添加或更新键值对 - `get(String key)`: 获取指定键的值 - `getString(String key)`: 获取指定键的字符串值 - `getInt(String key)`: 获取指定键的整数值 - `getBoolean(String key)`: 获取指定键的布尔值 - `getJSONObject(String key)`: 获取指定键`JSONObject`值 - `getJSONArray(String key)`: 获取指定键`JSONArray`值 - 检查键是否存在 - `has(String key)`: 检查是否存在指定键 - 移除键值对 - `remove(String key)`: 移除指定键的键值对 JSONArray 方法 - 添加/获取元素 - `put(Object value)`: 添加元素到数组末尾 - `get(int index)`: 获取指定索引元素 - `getString(int index)`: 获取指定索引字符串值 - `getInt(int index)`: 获取指定索引整数值 - `getBoolean(int index)`: 获取指定索引布尔值 - `getJSONObject(int index)`: 获取指定索引`JSONObject`值 - `getJSONArray(int index)`: 获取指定索引`JSONArray`值 - 获取数组长度 - `length()`: 获取数组的长度 - 移除元素 - `remove(int index)`: 移除指定索引的元素例
使用 `JSONObject` import org.json.JSONObject; public class JSONObjectExample { public static void main(String[] args) { JSONObject jsonObject = new JSONObject(); jsonObject.put("name", "John"); jsonObject.put("age", 30); jsonObject.put("isStudent", false); // 添加嵌套的 JSONObject JSONObject address = new JSONObject(); address.put("street", "123 Main St"); address.put("city", "Anytown"); jsonObject.put("address", address); // 添加 JSONArray JSONArray courses = new JSONArray(); courses.put("Math"); courses.put("Science"); jsonObject.put("courses", courses); System.out.println(jsonObject.toString(4)); } } =============以上代码,将输出以下信息======== { "name": "John", "age": 30, "isStudent": false, "address": { "street": "123 Main St", "city": "Anytown" }, "courses": [ "Math", "Science" ] } 使用`JSONArray` import org.json.JSONArray; public class JSONArrayExample { public static void main(String[] args) { JSONArray jsonArray = new JSONArray(); jsonArray.put("Math"); jsonArray.put("Science"); // 添加 JSONObject JSONObject student = new JSONObject(); student.put("name", "John"); student.put("age", 30); jsonArray.put(student); // 添加嵌套的 JSONArray JSONArray nestedArray = new JSONArray(); nestedArray.put(1); nestedArray.put(2); nestedArray.put(3); jsonArray.put(nestedArray); System.out.println(jsonArray.toString(4)); } } =====运行以上代码,将输出以下信息===================== [ "Math", "Science", { "name": "John", "age": 30 }, [ 1, 2, 3 ] ]
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。