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
]
]
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。


