兰 亭 墨 苑
期货 · 量化 · AI · 终身学习
首页
归档
编辑文章
标题 *
URL 别名 *
内容 *
(支持 Markdown 格式)
JSON 的格式要点可以概括为:**极致的严格**。 虽然 JSON 看起来很像 JavaScript 的对象,但它的语法规则要**严格得多**。哪怕多写了一个逗号,或者少写了一个引号,整个解析都会报错(Crash)。 以下是 JSON 格式必须遵守的 **6 大核心铁律**: ### 1. 键(Key)必须用双引号 这是 JSON 和 JS 对象最大的区别,也是新手最容易犯的错。 * ❌ 错误:`{ name: "Alice" }` (JS 写法) * ❌ 错误:`{ 'name': "Alice" }` (单引号也不行) * ✅ 正确:`{ "name": "Alice" }` ### 2. 字符串(String)必须用双引号 JSON 只有一种字符串引号,就是双引号 `"`。 * ❌ 错误:`"gender": 'male'` * ✅ 正确:`"gender": "male"` ### 3. 不允许“尾后逗号”(Trailing Comma) 在数组或对象的最后一项后面,**绝对不能**加逗号。 * ❌ 错误:`[1, 2, 3, ]` * ❌ 错误:`{ "a": 1, "b": 2, }` * ✅ 正确:`[1, 2, 3]` ### 4. 极其“洁癖”的数据类型 JSON 只支持 6 种数据类型,不支持任何与“逻辑”或“动态”相关的内容。 **支持的类型:** 1. **String:** `"abc"` 2. **Number:** `123`, `3.14`, `-1` (禁止前导零,如 `012`) 3. **Boolean:** `true`, `false` (必须小写) 4. **Null:** `null` (必须小写) 5. **Object:** `{ ... }` 6. **Array:** `[ ... ]` **严厉禁止的类型(重点):** * ❌ **Function:** 不能传输函数。 * ❌ **Undefined:** 如果字段是 `undefined`,转换时会被直接**丢弃**(消失)。 * ❌ **Date:** 日期对象会被转成字符串(如 `"2025-12-01T..."`)。 * ❌ **NaN / Infinity:** 会被转成 `null`。 * ❌ **Symbol:** 不支持。 ### 5. 禁止注释 JSON 文件里不能写 `//` 或 `/* */` 注释。 JSON 的设计者认为:数据就是数据,不需要解释。如果你需要注释,说明你的字段命名不够清晰,或者你应该把它写在文档里。 ### 6. 文件结构必须封闭 一个合法的 JSON 文件(或字符串),最外层必须是一个 **Object `{}`** 或者一个 **Array `[]`**。不能是一堆零散的键值对。 --- ### 一张图看懂对比 | 特性 | JavaScript 对象 (JS Object) | JSON | | :--- | :--- | :--- | | **键名引号** | 可省略,可用单引号 | **必须双引号** | | **字符串引号** | 单双引号、反引号均可 | **必须双引号** | | **尾部逗号** | 允许 (兼容性好) | **严禁** | | **注释** | 允许 | **严禁** | | **值类型** | 函数、undefined、NaN、正则等 | **仅限 6 种基础数据** | ### 总结 你可以把 JSON 想象成 **“被冷冻的、脱水的 JavaScript 对象”**。 * 它去掉了所有的“活性成分”(函数、动态逻辑、注释)。 * 它规定了唯一的“包装格式”(双引号、无逗号)。 这种严格性正是它能成为**跨语言通用标准**的原因:因为它太简单、太死板了,所以 Python、Java、Go 解析起来没有任何歧义。
配图 (可多选)
选择新图片文件或拖拽到此处
标签
更新文章
删除文章