JSON 教程

什么是 JSON?

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。它基于 JavaScript 的一个子集,采用完全独立于语言的文本格式,但使用了类似于 C 语言家族的习惯。JSON 易于人阅读和编写,同时也易于机器解析和生成。

JSON 是 Web 开发中最常用的数据格式之一,广泛应用于 API 通信、配置文件、数据存储等场景。

JSON 语法规则

  • 数据在名称/值对中
  • 数据由逗号分隔
  • 花括号 {} 保存对象
  • 方括号 [] 保存数组
  • 字符串必须使用双引号 "

基本示例

{ "name": "张三", "age": 25, "isStudent": false, "hobbies": ["读书", "编程", "旅行"], "address": { "city": "北京", "zip": "100000" } }

JSON 数据类型

类型描述示例
字符串双引号括起来的 Unicode 字符"Hello World"
数字整数或浮点数42, 3.14
布尔值truefalsetrue
数组有序的值列表,用方括号[1, 2, 3]
对象无序的键值对集合,用花括号{"key": "value"}
null空值null

JSON vs XML 对比

特性JSONXML
可读性简洁易读较冗长
数据体积较小较大(有闭合标签)
解析速度较慢
数据类型支持原生支持字符串、数字、布尔等所有数据都是文本
数组支持原生支持需通过重复元素模拟
注释支持不支持支持 <!-- -->
元数据/属性不支持支持属性
命名空间不支持支持

JSON 在各语言中的使用

JavaScript

// 解析 JSON const obj = JSON.parse('{"name":"张三"}'); // 生成 JSON const json = JSON.stringify(obj);

Python

# 解析 JSON import json obj = json.loads('{"name": "张三"}') # 生成 JSON json_str = json.dumps(obj, ensure_ascii=False)

Java

// 使用 Jackson 库 ObjectMapper mapper = new ObjectMapper(); // 解析 JSON User user = mapper.readValue(jsonStr, User.class); // 生成 JSON String json = mapper.writeValueAsString(user);

C#

// 使用 System.Text.Json using System.Text.Json; // 解析 JSON var user = JsonSerializer.Deserialize<User>(jsonStr); // 生成 JSON var json = JsonSerializer.Serialize(user);

Go

// 使用 encoding/json import "encoding/json" // 解析 JSON json.Unmarshal([]byte(jsonStr), &user) // 生成 JSON jsonBytes, _ := json.Marshal(user)

JSON 最佳实践

  • 始终使用双引号:JSON 要求键和字符串值必须使用双引号,单引号无效。
  • 不要使用尾随逗号:最后一个元素后面不要加逗号。
  • 避免深层嵌套:过多的嵌套层级会降低可读性和解析效率。
  • 使用有意义的键名:使用 camelCase 或 snake_case 命名规范,保持一致性。
  • 验证 JSON:始终使用如本工具的 JSON 编辑器验证 JSON 格式。
  • 注意数据类型:数字不要加引号,布尔值不要加引号,null 不要加引号。
  • 合理使用数组:表示列表数据用数组,表示映射关系用对象。