JSON _大括号 {} 和 中括号 []

JSON 简介(JavaScript Object Notation)

JSON(JavaScript Object Notation)是一种轻量级的 数据交换格式,广泛用于网络传输、配置文件和数据存储。它的设计易于人阅读和编写,同时也易于机器解析和生成。


1. JSON 的基本结构

JSON 由 键值对(Key-Value Pairs) 组成,支持以下数据类型:

  • 对象(Object){ "key": value }
  • 数组(Array)[ value1, value2, ... ]
  • 字符串(String)"text"
  • 数字(Number)123, 3.14
  • 布尔值(Boolean)true, false
  • 空值(Null)null

示例 JSON

{
    "name": "John",
    "age": 30,
    "isStudent": false,
    "courses": ["Math", "Physics"],
    "address": {
        "city": "New York",
        "zip": "10001"
    }
}

JSON 的大括号 {} 和 中括号 [] 详解

在 JSON 中,大括号 {}中括号 [] 是两种核心符号,分别表示 对象(Object)数组(Array)。它们的用途和语法规则如下:


1. 大括号 {}:表示对象(Object)

作用

  • 用于存储 键值对(Key-Value Pairs),类似编程中的字典或结构体。
  • 键(Key)必须是 字符串(用双引号包裹),值(Value)可以是任意 JSON 数据类型。

语法规则

{
    "key1": value1,
    "key2": value2
}
  • 键名必须用双引号 "",单引号或裸字符串无效。
  • 值可以是:字符串、数字、布尔值、对象、数组、null
  • 最后一个键值对后不能有逗号(否则解析会失败)。

示例

{
    "name": "John",
    "age": 30,
    "isStudent": false,
    "address": {
        "city": "New York"
    }
}

2. 中括号 []:表示数组(Array)

作用

  • 用于存储 有序的值列表,类似编程中的数组或列表。
  • 数组中的元素可以是任意 JSON 数据类型(包括对象或其他数组)。

语法规则

[ value1, value2, value3 ]
  • 元素之间用逗号分隔
  • 最后一个元素后不能有逗号(严格模式会报错)。
  • 元素类型可以混合(但通常保持类型一致)。

示例

["apple", "banana", "orange"]  // 字符串数组
[1, 2, 3.5]  // 数字数组
[
    { "name": "John" }, 
    { "name": "Alice" }
]  // 对象数组

3. 嵌套组合使用

JSON 支持 对象和数组的任意嵌套,这是其灵活性的关键。

示例:嵌套对象和数组

{
    "users": [
        {
            "name": "John",
            "skills": ["C++", "Python"]
        },
        {
            "name": "Alice",
            "skills": ["JavaScript", "Java"]
        }
    ],
    "total": 2
}
  • users 是一个 数组,包含两个 对象
  • 每个对象中的 skills 又是一个 数组

4. 常见问题解答

Q1:键名可以不用引号吗?

  • 不可以! JSON 标准要求键名必须用 双引号 "",否则解析会失败。
    { name: "John" }  // 错误!
    { "name": "John" } // 正确
    

Q2:数组和对象能混用吗?

  • 可以,但需确保语法正确。
    {
        "data": [
            { "id": 1 },
            [1, 2, 3]  // 对象和数组混用
        ]
    }
    

Q3:最后一个元素后能加逗号吗?

  • 不能! 这是 JSON 的严格语法规则。
    ["a", "b",]  // 错误!
    ["a", "b"]   // 正确
    

Q4:JSON 能写注释吗?

  • 原生不支持注释,但某些解析器允许以下变通方式:
    {
        "__comment": "这是伪注释",
        "name": "John"
    }
    

5. 在 Unreal Engine 中的解析

若需在 UE 中解析嵌套 JSON,可使用 FJsonObjectFJsonValue

TSharedPtr<FJsonObject> JsonObject;
// 解析 JSON 字符串
if (FJsonSerializer::Deserialize(Reader, JsonObject)) {
    // 获取对象字段
    FString Name;
    JsonObject->GetStringField("name");
    
    // 获取数组字段
    const TArray<TSharedPtr<FJsonValue>>* UsersArray;
    JsonObject->TryGetArrayField("users", UsersArray);
}

总结

符号类型用途示例
{}对象存储键值对{ "key": "value" }
[]数组存储有序列表[ "a", "b", 123 ]
嵌套任意组合构建复杂数据结构{ "data": [ {...} ] }

理解 {}[] 的区别是掌握 JSON 的关键!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值