[数据交换文本格式]json(介绍)

286 阅读4分钟

1. JSON是什么?

JSON 的全称是 JavaScript Object Notation。简单来说,它是一种轻量级的数据交换格式

  • 轻量级: 它的语法非常简单,相对于XML等其他格式,它没有那么多标签和冗余信息,所以文件体积小,网络传输速度快。
  • 数据交换格式: 它主要用来在不同系统、平台或编程语言之间传递和表示结构化的数据。比如,一个用Python写的后端服务器和一个用JavaScript写的网页前端,它们之间沟通的“共同语言”就可以是JSON。

2. 它是数据结构吗?

它不是数据结构,而是一种“表示法”或“格式”。

这是一个关键区别:

  • 在你的硬盘上或网络上传输时:JSON是一个纯文本文件,其内容遵循JSON的语法规则。这时它是一个 .json 文件或一个字符串。
  • 在你的程序代码(如JavaScript, Python, Java)中被解析后:它会被转换成该语言对应的一种数据结构
    • 在JavaScript中,JSON字符串可以直接被解析成JavaScript对象(Object)或数组(Array)
    • 在Python中,JSON字符串会被解析成字典(dict)或列表(list)
    • 在Java中,会被解析成 MapList 或自定义的实体类对象。

你可以把它想象成:

  • JSON(文本格式) 就像是人与人之间写信用的英语(一种共同约定的格式)。
  • 数据结构(内存中的对象) 像是你大脑中对信的内容产生的理解和想法

3. 我该如何理解它?

理解JSON最快的方法就是看它的样子。它非常直观,几乎和现实中的清单、表格一样。

JSON的核心构建块只有两种:

  1. 键值对"键": 值

    • 键必须是字符串(用双引号包围)。
    • 值可以是:字符串、数字、布尔值(true/false)、null、对象、数组
    • 例如: "name": "张三"
  2. 数组[值1, 值2, ...]

    • 一个有序的值的列表。

通过这两种结构的组合,可以表示非常复杂的数据。

看一个例子:

{
  "name": "张三",
  "age": 30,
  "isStudent": false,
  "hobbies": ["读书", "游泳", "编程"],
  "address": {
    "city": "北京",
    "street": "朝阳路"
  }
}

如何理解这个例子?

  • 这是一个描述“张三”这个人的信息对象。
  • 他有:
    • 一个名字(字符串):"张三"
    • 一个年龄(数字):30
    • 一个是否是学生的状态(布尔值):false
    • 一个爱好列表(数组):里面有三个字符串
    • 一个地址信息(另一个嵌套的对象):里面又包含了城市和街道。

如果你把它想象成一张表格,可能就是这样的:

属性
name张三
age30
isStudent
hobbies[读书, 游泳, 编程]
address.city北京
address.street朝阳路

4. 它的作用是什么?

JSON在现代软件开发中无处不在,主要作用有:

  1. API通信(最主要用途)

    • 当你访问一个网页或手机App时,客户端(浏览器/App)会向服务器发送请求。服务器不是返回一个完整的HTML页面,而是经常返回一个JSON数据包。客户端拿到这个JSON后,再把它解析、渲染成你看到的漂亮界面。
    • 例如,查询天气API,服务器返回:{"city": "Shanghai", "temp": 22, "condition": "晴"}
  2. 配置文件

    • 很多软件(如VS Code, npm)用 .json 文件来存储配置信息,因为它结构清晰,易于人和机器阅读修改。
  3. 数据存储

    • 一些NoSQL数据库(如MongoDB)就直接使用类似JSON的格式(BSON)来存储数据。
  4. 序列化

    • 将一个程序内存中的对象转换(序列化)成JSON字符串,以便保存到文件或通过网络发送。反之,将JSON字符串转换(反序列化)回内存中的对象。

总结

  • JSON是什么: 一种简单、通用的数据交换文本格式
  • 它是数据结构吗: 不是,它是文本。但解析后,会变成各种语言中的数据结构(对象、字典等)。
  • 如何理解它: 把它看作由 键值对数组 组成的、层次分明的数据清单,非常接近我们对现实事物的描述方式。
  • 它的作用在网络上、在不同程序之间可靠、高效地传递结构化数据,是现代Web和移动应用开发的基石。

简单讲,JSON就是数据界的“普通话”,几乎所有编程语言都“会说”和“能听懂”这门语言,并且可以把它转换成自己的方言, 也就是自己的数据结构, 所以它成为了系统间沟通的首选。