JSON 语法规则

JSON语法规则

掌握JSON格式的核心规则,避免常见错误

基本语法规则

1. 数据以键值对形式存在

JSON数据以键值对的形式组织,键和值之间使用冒号分隔。

"name": "张三"
2. 键必须使用双引号

JSON中的键必须使用双引号包裹,单引号或不使用引号都是无效的。

正确
"firstName": "李四"
错误
firstName: "李四"  // 键没有引号
'lastName': '王五'  // 使用单引号
3. 数据由逗号分隔

多个键值对之间使用逗号分隔。

{
  "name": "张三",
  "age": 30,
  "city": "北京"
}
4. 对象使用大括号

JSON对象使用大括号{}包裹。

{
  "person": {
    "name": "张三",
    "age": 30
  }
}
5. 数组使用中括号

JSON数组使用中括号[]包裹。

[
  "苹果",
  "香蕉",
  "橙子"
]

JSON数据类型

字符串

必须使用双引号表示。

"Hello, World!"
"姓名"
"123"  // 这是字符串,不是数字
数字

整数或浮点数,不需要引号。

42
3.14159
-7
1.2e10
布尔值

true 或 false,小写且无引号。

true
false
Null

表示空值,小写且无引号。

null
对象

无序的键值对集合。

{
  "name": "张三",
  "age": 30
}
数组

有序的值集合。

["苹果", "香蕉", "橙子"]
[1, 2, 3, 4, 5]

JSON结构

简单对象
{
  "firstName": "张",
  "lastName": "三",
  "age": 30,
  "isStudent": false,
  "hobbies": ["阅读", "游泳", "编程"],
  "address": {
    "street": "人民路123号",
    "city": "北京",
    "country": "中国"
  }
}
数组包含对象
[
  {
    "id": 1,
    "product": "笔记本电脑",
    "price": 5999.99,
    "inStock": true
  },
  {
    "id": 2,
    "product": "智能手机",
    "price": 2999.99,
    "inStock": false
  },
  {
    "id": 3,
    "product": "平板电脑",
    "price": 1999.99,
    "inStock": true
  }
]
嵌套结构
{
  "company": "ABC科技有限公司",
  "employees": [
    {
      "id": 101,
      "name": "张三",
      "department": "技术部",
      "projects": [
        {
          "name": "项目A",
          "status": "进行中"
        },
        {
          "name": "项目B",
          "status": "已完成"
        }
      ]
    },
    {
      "id": 102,
      "name": "李四",
      "department": "市场部",
      "projects": []
    }
  ]
}

常见JSON语法错误

1. 使用单引号
错误示例
{
  'name': '张三',
  'age': 30
}
正确写法
{
  "name": "张三",
  "age": 30
}
2. 末尾逗号
错误示例
{
  "name": "张三",
  "age": 30,
}
正确写法
{
  "name": "张三",
  "age": 30
}
3. 注释

JSON标准不支持注释,添加注释会导致解析错误。

错误示例
{
  // 这是姓名
  "name": "张三",
  /* 这是年龄 */
  "age": 30
}
正确写法
{
  "name": "张三",
  "age": 30
}

如果确实需要注释,可以添加专门的注释字段:

{
  "_comment": "这是姓名",
  "name": "张三",
  "age": 30
}
4. 特殊字符转义

JSON字符串中的特殊字符需要使用反斜杠进行转义。

字符 转义序列 示例
双引号 \" "他说:\"你好!\""
反斜杠 \\ "路径:C:\\Windows\\System32"
换行 \n "第一行\n第二行"
制表符 \t "姓名\t年龄"

JSON验证与格式化

验证JSON有效性

可以使用在线工具或编程语言内置函数验证JSON格式是否正确。

JavaScript验证示例
function isValidJSON(str) {
  try {
    JSON.parse(str);
    return true;
  } catch (e) {
    return false;
  }
}

// 使用示例
const jsonString = '{"name": "张三", "age": 30}';
console.log(isValidJSON(jsonString)); // true
Python验证示例
import json

def is_valid_json(json_string):
    try:
        json.loads(json_string)
        return True
    except ValueError:
        return False

# 使用示例
json_string = '{"name": "张三", "age": 30}'
print(is_valid_json(json_string))  # True
JSON格式化

良好的格式化可以提高JSON的可读性。

未格式化的JSON
{"name":"张三","age":30,"hobbies":["阅读","游泳","编程"],"address":{"street":"人民路123号","city":"北京","country":"中国"}}
格式化后的JSON
{
  "name": "张三",
  "age": 30,
  "hobbies": [
    "阅读",
    "游泳",
    "编程"
  ],
  "address": {
    "street": "人民路123号",
    "city": "北京",
    "country": "中国"
  }
}