JSON 是什么?通俗详解

news2025/4/17 11:47:42

**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 都是现代数据交换的“通用语言”。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2330705.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Flutter:Flutter SDK版本控制,fvm安装使用

1、首先已经安装了Dart&#xff0c;cmd中执行 dart pub global activate fvm2、windows配置系统环境变量 fvm --version3、查看本地已安装的 Flutter 版本 fvm releases4、验证当前使用的 Flutter 版本&#xff1a; fvm flutter --version5、切换到特定版本的 Flutter fvm use …

碰一碰发视频源头开发技术服务商

碰一碰发视频系统 随着短视频平台的兴起&#xff0c;用户的创作与分享需求日益增长。而如何让视频分享更加便捷、有趣&#xff0c;则成为各大平台优化的重点方向之一。抖音作为国内领先的短视频平台&#xff0c;在2023年推出了“碰一碰”功能&#xff0c;通过近距离通信技术实…

Oracle 23ai Vector Search 系列之4 VECTOR数据类型和基本操作

文章目录 Oracle 23ai Vector Search 系列之4 VECTOR数据类型和基本操作VECTOR 数据类型基本语法Vector 维度限制和向量大小向量存储格式&#xff08;DENSE vs SPARSE&#xff09;1. DENSE存储2. SPARSE存储3. 内部存储与空间计算 Oracle VECTOR数据类型的声明格式VECTOR基本操…

C++day8

思维导图 牛客练习 练习 #include <iostream> #include <cstring> #include <cstdlib> #include <unistd.h> #include <sstream> #include <vector> #include <memory> using namespace std; class user{ public: …

MySQL的进阶语法8(SQL优化——insert、主键、order by、group by、limit、count和update)

目录 一、插入数据 1.1 insert 1.2 大批量插入数据 二、主键优化 2.1 数据组织方式 2.2 页分裂 2.2.1 主键顺序插入效果 2.2.2 主键乱序插入效果 2.3 页合并 2.4 索引设计原则 三、order by优化 3.1 执行以下两条语句&#xff08;无索引&#xff09; 3.2 创建索引…

自然语言处理利器NLTK:从入门到核心功能解析

文章目录 一、NLP领域的基石工具包二、NLTK核心模块全景解析1 数据获取与预处理2 语言特征发现3 语义与推理 三、设计哲学与架构优势1 四维设计原则2 性能优化策略 四、典型应用场景1 学术研究2 工业实践 五、生态系统与未来演进 一、NLP领域的基石工具包 自然语言工具包&…

使用Docker安装及使用最新版本的Jenkins

1. 拉取镜像 通过Windows powerShell执行命令行&#xff08;2选1&#xff09;&#xff1a; -- 长期支持版 docker pull jenkins/jenkins:lts-- 最新版 docker pull jenkins/jenkins:latest 2. 创建并执行容器 你可以通过以下命令来运行Jenkins容器&#xff0c;执行命令&…

15-产品经理-维护需求

一、提研发需求 在产品–研发需求列表页&#xff0c;点击“提研发需求”按钮&#xff0c; 在提研发需求页面&#xff0c;可以选择已有的计划。也可以在计划页面里进行关联。 未编辑完的需求可以点击【存为草稿】按钮&#xff0c;保存为草稿状态&#xff0c;待编辑完成再选择提…

js前端对时间进行格式处理

时间格式处理 通过js前端&#xff0c;使用dayjs库进行格式化 安装dayjs库 npm install dayjs 封装成日期格式化工具类 formatter.ts // 导入 dayjs&#xff0c;先安装依赖 npm install dayjs import dayjs from "dayjs"; import utc from "dayjs/plugin/utc…

如何拿到iframe中嵌入的游戏数据

在 iframe 中嵌入的游戏数据是否能被获取&#xff0c;取决于以下几个关键因素&#xff1a; 1. 同源策略 浏览器的同源策略是核心限制。如果父页面和 iframe 中的内容同源&#xff08;即协议、域名和端口号完全相同&#xff09;&#xff0c;那么可以直接通过 JavaScript 访问 …

Chrome 135 版本新特性

Chrome 135 版本新特性 一、Chrome 135 版本浏览器更新 ** 1. 第三方托管账户注册迁移到 OIDC 授权码流程** Chrome 135 将账户注册的登录页面从营销网站迁移到动态网站&#xff0c;同时也将 OpenID Connect (OIDC) 的隐式流程迁移到授权码流程。这样做的目的是进一步提升第…

【Vue-组件】学习笔记

目录 <<回到导览组件1.项目1.1.Vue Cli1.2.项目目录1.3.运行流程1.4.组件的组成1.5.注意事项 2.组件2.1.组件注册2.2.scoped样式冲突2.3.data是一个函数2.4.props详解2.5.data和prop的区别 3.组件通信3.1.父子通信3.1.1.父传子&#xff08;props&#xff09;3.1.2.子传父…

(PROFINET 转 EtherCAT)EtherCAT/Ethernet/IP/Profinet/ModbusTCP协议互转工业串口网关

型号 协议转换通信网关 PROFINET 转 EtherCAT MS-GW31 概述 MS-GW31 是 PROFINET 和 EtherCAT 协议转换网关&#xff0c;为用户提供两种不同通讯协议的 PLC 进行数据交互的解决方案&#xff0c;可以轻松容易将 EtherCAT 网络接入 PROFINET 网络中&#xff0c;方便扩展&…

关于sqlsugar实体多层List映射的问题

如上图所示&#xff0c;当一个主表&#xff08;crm_fina_pay_req&#xff09;的子表list<文件附件关系表>&#xff08; List<crm_fina_payreq_evidofpay_relation> &#xff09;中&#xff0c;还包含有sysfile&#xff08;SysFile SysFiles&#xff09;类型的文件信…

STM32 HAL库 CANFD配置工具

用法说明&#xff1a; 该工具适用于STM32HAL库&#xff0c;可一键生成CANFD的HAL库配置代码。计算依据为HAL库&#xff0c;并参考ZLG标准。 软件界面&#xff1a; 仓库地址&#xff1a; HAL CANFD Init Gen: 适用于STM32控制器的HAL库 版本说明&#xff1a; V1.2.0 &#x…

UIMeter-UI自动化软件(产品级)

前言&#xff1a;作为一个资深测试工程师&#xff0c;UI测试&#xff0c;webUI自动化测试是我们必备的技能&#xff0c;我们都知道常用的框架比如selenium、playwright、rebootframwork等等&#xff0c;但是无论哪一种框架&#xff0c;都需要测试人员去编写代码&#xff0c;进行…

企业级Java开发工具MyEclipse v2025.1——支持AI编码辅助

MyEclipse一次性提供了巨量的Eclipse插件库&#xff0c;无需学习任何新的开发语言和工具&#xff0c;便可在一体化的IDE下进行Java EE、Web和PhoneGap移动应用的开发&#xff1b;强大的智能代码补齐功能&#xff0c;让企业开发化繁为简。 立即获取MyEclipse v2025.1正式版 具…

【redis】简介及在springboot中的使用

redis简介 基本概念 Redis&#xff0c;英文全称是Remote Dictionary Server&#xff08;远程字典服务&#xff09;&#xff0c;是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库&#xff0c;并提供多种语言的API。 与MySQL数据库不…

隐私计算的崛起:数据安全的未来守护者

在信息技术&#xff08;IT&#xff09;的滚滚浪潮中&#xff0c;一种新兴技术正以惊人速度崭露头角——隐私计算&#xff08;Privacy-Preserving Computation&#xff09;。2025 年&#xff0c;随着数据泄露事件频发、全球隐私法规日益严格&#xff0c;以及企业对数据协作需求的…

【Vue-vue基础知识】学习笔记

目录 <<回到导览vue基础知识1.1.创建一个vue实例1.2.vue基础指令1.2.1.v-bind1.2.2.v-model1.2.3.常用事件1.2.4.指令修饰符 1.3.计算属性1.3.1.计算属性的完整写法1.3.2.【案例】成绩 1.4.watch1.4.1.watch属性1.4.2.翻译业务实现1.4.3.watch属性的完整写法1.4.4.【案例…