JSONArray和JSONObject区别

欣喜 Java经验 发布时间:2025-04-02 09:35:29 阅读数:4181 1
下文笔者讲述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
    ]
]
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaJingYan/202504/17435577538423.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者