JSON - 基本介绍

发布于:2025-02-22 ⋅ 阅读:(17) ⋅ 点赞:(0)

JSON 基本介绍:结构、用途及编码技巧

在软件开发中,JSON(JavaScript Object Notation) 已成为数据存储与传输的主流格式。无论是前端与后端的通信,还是跨平台的数据交互,JSON 都凭借其 轻量级、易读、易解析 的特性成为首选。

目录

一、什么是 JSON?

1. JSON 概述

2. JSON 的特点

二、JSON 的基本语法与格式

1. JSON 结构

2. JSON 数据类型

三、JSON 编码与解析(Coding 方法)

1. JavaScript 中的 JSON 解析与编码

(1) JSON 字符串转换为 JavaScript 对象

(2) JavaScript 对象转换为 JSON 字符串

2. Python 中的 JSON 解析与编码

(1) 解析 JSON(字符串 -> Python 字典)

(2) Python 对象转换为 JSON

3. Java 中的 JSON 解析

(1) 使用 Jackson

4. C++ 中的 JSON 解析

四、JSON 的用途与应用场景

1. API 数据交换

2. 配置文件

3. 数据存储

4. 日志格式

五、JSON 进阶扩展

1. JSON Schema(JSON 结构验证)

2. JSON 与 YAML 的对比

六、总结


一、什么是 JSON?

1. JSON 概述

JSON(JavaScript Object Notation)是一种基于 键值对 的数据格式,主要用于 数据存储和交换。虽然 JSON 起源于 JavaScript,但目前几乎所有编程语言(Python、Java、C++、Go)都支持 JSON。

2. JSON 的特点

轻量级:比 XML 更简洁,适用于 Web 数据传输。
易解析:可被 JavaScript 直接解析,也能转换为各种编程语言的数据结构。
可读性强:语法简单,易于理解。
跨语言支持:广泛应用于前后端通信、API 交互、配置文件等场景。


二、JSON 的基本语法与格式

1. JSON 结构

JSON 的数据结构主要由两种类型组成:

  • 对象(Object):由 {} 包围的 键值对集合,类似 JavaScript 对象。
  • 数组(Array):由 [] 包围的 值的集合,类似 JavaScript 数组。
{
  "name": "Alice",
  "age": 25,
  "isStudent": false,
  "skills": ["JavaScript", "Python", "Java"],
  "address": {
    "city": "Shanghai",
    "zipCode": "200000"
  }
}

2. JSON 数据类型

JSON 仅支持以下数据类型:

JSON 数据类型 示例
字符串(String) "name": "Alice"
数字(Number) "age": 25
布尔值(Boolean) "isStudent": false
数组(Array) "skills": ["JS", "Python"]
对象(Object) "address": { "city": "Shanghai" }
null "data": null

⚠️ 注意

  • JSON 的字符串必须使用双引号 "",不能使用单引号 '
  • JSON 的 key 也必须用双引号包裹,不像 JavaScript 对象可以省略。

三、JSON 编码与解析(Coding 方法)

不同的编程语言提供了丰富的 JSON 解析和编码工具,下面介绍几种常见方式。

1. JavaScript 中的 JSON 解析与编码

(1) JSON 字符串转换为 JavaScript 对象
const jsonString = '{"name": "Alice", "age": 25}';
const user = JSON.parse(jsonString);
console.log(user.name); // 输出:Alice
(2) JavaScript 对象转换为 JSON 字符串
const user = { name: "Alice", age: 25 };
const jsonString = JSON.stringify(user);
console.log(jsonString); // 输出:{"name":"Alice","age":25}

2. Python 中的 JSON 解析与编码

(1) 解析 JSON(字符串 -> Python 字典)
import json

json_string = '{"name": "Alice", "age": 25}'
user = json.loads(json_string)
print(user["name"])  # 输出:Alice
(2) Python 对象转换为 JSON
user = {"name": "Alice", "age": 25}
json_string = json.dumps(user, indent=4)  # 格式化 JSON 输出
print(json_string)

3. Java 中的 JSON 解析

Java 常用 JacksonGson 解析 JSON。

(1) 使用 Jackson
import com.fasterxml.jackson.databind.ObjectMapper;

ObjectMapper objectMapper = new ObjectMapper();
String jsonString = "{\"name\":\"Alice\",\"age\":25}";

// JSON 转换为 Java 对象
User user = objectMapper.readValue(jsonString, User.class);

// Java 对象转换为 JSON
String jsonOutput = objectMapper.writeValueAsString(user);
System.out.println(jsonOutput);

4. C++ 中的 JSON 解析

C++ 可以使用 nlohmann/json 库:

#include <iostream>
#include <nlohmann/json.hpp>

int main() {
    std::string jsonString = R"({"name": "Alice", "age": 25})";
    auto user = nlohmann::json::parse(jsonString);

    std::cout << "Name: " << user["name"] << std::endl;
}

四、JSON 的用途与应用场景

1. API 数据交换

JSON 是 RESTful API、GraphQL 主要的数据格式:

{
  "status": "success",
  "data": {
    "id": 101,
    "username": "alice"
  }
}

2. 配置文件

许多应用程序(如 VS Code、ESLint、webpack)使用 JSON 作为配置格式:

{
  "editor.fontSize": 14,
  "theme": "dark"
}

3. 数据存储

MongoDB 等 NoSQL 数据库使用 JSON 结构存储数据:

{
  "_id": "5f2c10f5e89b9",
  "title": "JSON Guide",
  "tags": ["programming", "JSON"]
}

4. 日志格式

JSON 也常用于日志存储:

{
  "timestamp": "2025-02-05T10:00:00Z",
  "level": "INFO",
  "message": "User login successful",
  "user": "alice"
}

五、JSON 进阶扩展

1. JSON Schema(JSON 结构验证)

用于约束 JSON 结构:

{
  "type": "object",
  "properties": {
    "name": { "type": "string" },
    "age": { "type": "integer" }
  },
  "required": ["name", "age"]
}

2. JSON 与 YAML 的对比

特性 JSON YAML
语法风格 严格格式,键值对必须加引号 更自由,缩进表示层级
解析速度 快速 稍慢
可读性 适中 更适合手写
用途 API、数据存储 配置文件(如 Kubernetes)

六、总结

🚀 JSON 是现代开发中不可或缺的工具,其 轻量级、易读、易解析 的特性使其广泛应用于 API、配置文件、数据存储 等场景。

📌 无论是 JavaScript、Python、Java 还是 C++,都能轻松解析 JSON 数据,我们应熟练掌握 JSON 结构和编码方法,以提升在实际开发中的效率!