当前位置: 首页 > news >正文

JSON 是什么?通俗详解

**JSON 是什么?通俗详解**

---

### **1. 一句话总结**
**JSON(JavaScript Object Notation)** 是一种轻量级的 **数据交换格式**,就像“数据的快递包装盒”,用来在不同系统之间 **传递和存储信息**,简单易懂,人和计算机都能轻松处理。

---

### **2. 为什么需要 JSON?**
想象你要把一份用户信息(比如名字、年龄、地址)从手机App传给服务器,或者保存到文件里。你需要一种 **统一、标准化的格式**,让所有设备都能理解。JSON 就是这个“通用语言”。

---

### **3. JSON 长什么样?**
JSON 的结构就像 **“键值对”的集合**,用大括号 `{}` 包裹对象,用中括号 `[]` 包裹数组。举个例子:

```json
{
  "name": "张三",
  "age": 25,
  "isStudent": false,
  "hobbies": ["打篮球", "读书", "旅行"],
  "address": {
    "city": "北京",
    "street": "朝阳路123号"
  }
}
```

- **键值对**:`"键": 值`,例如 `"name": "张三"`。
- **数据类型**:字符串(`"张三"`)、数字(`25`)、布尔值(`true/false`)、数组(`["打篮球", ...]`)、对象(`{ "city": "北京", ... }`)。
- **嵌套结构**:对象里可以再套对象或数组(如 `address` 字段)。

---

### **4. JSON 的三大特点**
1. **轻量级**:没有复杂的标签(比如 XML 的 `<name>张三</name>`),纯文本,体积小。
2. **易读易写**:结构清晰,人类一眼能看懂。
3. **跨语言通用**:几乎所有编程语言(Python、Java、JavaScript 等)都支持 JSON。

---

### **5. JSON 的常见用途**
- **前后端数据传输**:比如网页从服务器获取用户数据。
- **配置文件**:比如 App 的设置参数保存为 `.json` 文件。
- **API 接口**:微信支付、天气预报等接口返回的数据通常是 JSON 格式。

---

### **6. JSON vs XML:谁更好?**
- **JSON 优势**:
  - 更简洁:省去冗余标签。
  - 解析更快:计算机处理起来效率更高。
  - 天然适合 JavaScript:网页开发更方便。
- **XML 优势**:
  - 支持注释和复杂结构(如文档类型定义 DTD)。
  - 某些传统系统(如银行)仍在使用。

**简单对比**:
```xml
<!-- XML 表示用户信息 -->
<user>
  <name>张三</name>
  <age>25</age>
  <hobbies>
    <hobby>打篮球</hobby>
    <hobby>读书</hobby>
  </hobbies>
</user>
```
```json
// JSON 表示同样的信息
{
  "name": "张三",
  "age": 25,
  "hobbies": ["打篮球", "读书"]
}
```

---

### **7. 如何生成和解析 JSON?**
- **生成 JSON**:编程语言中把数据按规则写成字符串。
- **解析 JSON**:把 JSON 字符串转换为程序中的变量(如对象、数组)。

**Python 示例**:
```python
import json

# 生成 JSON
data = {
    "name": "张三",
    "age": 25,
    "hobbies": ["打篮球", "读书"]
}
json_str = json.dumps(data)  # 转换为 JSON 字符串

# 解析 JSON
parsed_data = json.loads(json_str)
print(parsed_data["name"])  # 输出:张三
```

---

### **8. 注意事项**
- **严格语法**:键名必须用双引号 `""`,末尾不能有多余逗号。
- **不支持注释**:JSON 标准中不允许添加注释。
- **安全风险**:解析不可信的 JSON 数据时,需防范注入攻击。

---

### **总结**
JSON 就像是 **数据的快递盒**,用最简单的包装(键值对)把信息整齐打包,确保发送方和接收方都能轻松拆解。无论是网页、App 还是服务器,JSON 都是现代数据交换的“通用语言”。

相关文章:

  • Opencv计算机视觉编程攻略-第十节 估算图像之间的投影关系
  • 【力扣hot100题】(059)单词搜索
  • 华为IP(4)
  • 面试自我介绍
  • 介绍几种创意登录页(含完整源码)
  • Go语言-初学者日记(五):文件操作与 JSON 实战
  • PHP 项目搭建 ELK 日志监控体系完整指南
  • 第三方检测报告—科技成果鉴定测试
  • Ansible YAML 基础语法与关键词 的详细指南
  • 网络编程—TCP/IP模型(IP协议)
  • 若依系统弹窗父子页面传参数
  • 45.跳跃游戏 II
  • 网络编程—TCP/IP模型(数据链路层了解与知识补充)
  • DApp实战篇:前端技术栈一览
  • [ Redis ] | 初识Redis
  • 【数据结构】图的存储
  • ES使用聚合aggregations实战(自用:2025.04.07更新)
  • 铰链损失函数 Hinge Loss和Keras 实现
  • leetcode-代码随想录-哈希表-赎金信
  • Qt中的多种输出方式,信号与槽的基本使用
  • 门户网站集约化建设/百度服务热线电话
  • 2022建站市场/全媒体运营师培训
  • 如何使用电子商务网站/个人网站怎么建立
  • 应用软件和嵌入式软件的区别/外贸网站优化推广
  • 定制型网站开发/福州seo快速排名软件
  • 免费浏览的网站入口/百度一下你知道主页官网