zhcn 编程语言 Web相关 HTML 什么是 JSON?

什么是 JSON?

JSON的正式名称是“JavaScript Object Notation”,翻译为“JavaScript Object Notation”或“JavaScript Object Notation”。一种轻量级、基于文本的开放数据交换格式。 JSON 在 Web 开发领域发挥着重要作用。如果你想在 Web 开发领域做出巨大贡献,你需要了解 JSON。

数据交换是指两个设备之间建立连接并在它们之间传输数据的过程。

虽然 JSON 的名字中带有“JavaScript”,但它不仅可以用在 JavaScript 中,还可以用在 JavaScript、Java、PHP、Python、C++ 等中。
JSON 是纯字符串形式的数据,本身不提供使其非常适合通过网络发送的方法(函数)。 JavaScript、PHP、Java、Python、C++ 和其他编程语言都有处理 JSON 数据的内置方法。

JSON 基于 JavaScript 的一个子集(标准 ECMA-262 第三版 – 1999 年 12 月)。它是一种开放且轻量级的数据交换格式。使用独立于编程语言的文本格式存储和表示数据。易于编程。它对于人类来说很容易阅读和编写,但对于计算机来说也很容易解析和生成,并且通常用于在 Web 客户端(浏览器)和 Web 服务器之间传输数据。

在 JSON 中,数据以两种方式表示:
  • 对象:使用大括号{ }定义的键值对(名称和值)的集合。每个键值对都以键开头,后跟冒号:最后是值。用逗号分隔多个键值对,例如{"name":"IT基礎","url":"https://it-kiso.com"}
  • 数组(Array):使用方括号[ ] ,用于分隔数组中每个值的逗号定义的有序值集合。

这是一些简单的 JSON 数据:
 
{
    "Name":"IT基礎",
    "Url":"https://it-kiso.com/",
    "Tutorial":"JSON",
    "Article":[
        "JSON とは",
        "JSONP とは",
        "JSON 構文規則"
    ]
} 

JSON 的历史

JSON 由 Douglas Crockford 于 2000 年初发明,自 2001 年开始流行。那年 4 月,旧金山湾区车库里的一台计算机发送了第一个 JSON 格式的数据。这是计算史上具有开创性的时刻。


照片:道格拉斯·克罗克福德

2005年到2006年,JSON正式成为主流数据格式,雅虎、谷歌等著名网站开始广泛使用JSON格式。

2013年,ECMA International(欧洲计算机制造商协会)制定了JSON语法标准——ECMA -404

在过去的 20 多年里,JSON 已经取代 XML 成为 Web 开发的首选数据交换格式。

为什么使用 JSON?

JSON 并不是通过 Internet 传输数据的唯一方式;还有 XML 格式。 JSON 和 XML 可以完成许多相同的任务,那么为什么使用 JSON 而不是 XML?

使用 JSON 的主要原因是 JavaScript。如您所知,JavaScript 是 Web 开发的必备技术之一,而 JSON 是基于 JavaScript 的一个子集,JavaScript 默认支持 JSON,只要学习了 JavaScript,就不需要任何额外的知识了。使用 JSON 无需学习任何内容。

另一个原因是JSON比XML更容易阅读,而且JSON更简洁、更容易理解。

与 XML 相比,JSON 具有以下优点:
  • 结构简单紧凑:与XML相比,JSON遵循简单紧凑的风格。虽然 XML 对于程序员编辑和读取很有用,但它相对复杂。
  • 更快:JSON 解析速度比 XML 快(XML 与 HTML 非常相似,因此解析大型 XML 文件时需要消耗额外的内存)。在存储相同的数据时,JSON格式占用的存储空间更少。
  • 可读性强:JSON的结构很容易让程序员阅读。

JSON 的缺点

没有什么是完美的,像这样的 JSON 也不例外。
  • 仅一种数字类型:JSON 仅支持 IEEE-754 双精度浮点格式,因此您无法使用 JSON 来存储许多编程语言中的各种数字类型。
  • 无日期类型:JSON 只能将日期表示为日期字符串(例如,1970-01-01)或时间戳(例如,1632366361)。
  • 无注释:您无法向 JSON 添加注释。
  • 冗余:虽然 JSON 比 XML 更简洁,但它并不是最紧凑的数据交换格式。具有大量数据或特殊用途的服务应使用更高效的数据格式。

JSON应该如何存储?

JSON 数据可以保存在 .json 格式的文件中(类似于 .txt 格式;都是纯文本文件)。 JSON 数据还可以以字符串的形式存储在数据库、cookie 和会话中。

使用保存的 JSON 数据也非常容易。在各种编程语言中,您可以在 JavaScript 中使用 JSON.parse() 和 JSON.stringify(),在 PHP 中使用 json_decode() 和 json_encode( )。

什么时候使用 JSON?

现在我们对 JSON 有了一个简单的了解,让我们看看什么时候使用它。

1) 定义接口

JSON 使用最多的地方是 Web 开发领域,目前的数据接口通常返回 JSON 格式的数据,例如:
  • 使用 Ajax 异步加载数据。
  • RPC远程调用。
  • 前端和后端分离,数据从后端返回。
  • 开发API,例如Yahoo和Rakuten的一些开放接口。

这些接口通常提供接口文档,概述接口调用的方法、所需的参数以及返回的数据。

2)序列化

当程序运行时,所有变量都存储在内存中,如果重新启动程序或服务器宕机,数据就会丢失。一般来说,运行时变量不是很重要,如果丢失了,那就丢失了。您可能需要为下一个程序启动或其他程序保存一些数据。

这种将数据保存在内存中的过程称为序列化。序列化在Python中称为pickling,在其他语言中也称为序列化、封送、扁平化等,意思都是一样的。

通常,序列化是将程序中的对象直接转换为可以存储或传输的数据,但这保留了对象的类型信息,并且不能跨语言使用。例如,使用Python将数据序列化到硬盘上,然后使用Java。读取这个数据,此时读取失败,因为不同的编程语言对对象信息进行序列化,如果之前转换成JSON格式就不会出现这个问题。

3)生成token

令牌有多种格式。您可以使用 JSON、字符串、数字等生成令牌。JSON 格式的令牌最典型的格式是JWT (JSON Web 令牌)。

随着技术的发展,分布式Web应用程序越来越流行,通过Session管理用户登录状态的成本也逐渐发展起来。获取Redis中缓存的信息。用户信息。后来,随着 JWT 的出现,不再需要经过 Redis 缓存,直接读取基于 token 存储的用户信息来进行身份验证变得更加容易。

4)配置文件

也可以使用 JSON 作为程序配置文件,但比较典型的是npm (Node.js 包管理工具)的 package.json 包管理配置文件。
 
{
    "name": "server",
    "version": "0.0.0",
    "private": true,
    "main": "server.js",
    "scripts": {
        "start": "node ./bin/www"
    },
    "dependencies": {
        "cookie-parser": "~1.4.3",
        "debug": "~2.6.9",
        "express": "~4.16.0",
        "http-errors": "~1.6.2",
        "jade": "~1.11.0",
        "morgan": "~1.9.0"
    }
} 

提示:虽然您可以使用 JSON 来定义配置文件,但 JSON 不允许您添加注释,从而导致配置文件的可读性较差。

总结
JSON是一种轻量级的数据交换格式,它基于JavaScript的一个子集,它使用完全独立于编程语言的格式来表示数据,并且可以跨语言和平台使用,它具有简洁、清晰的特点。因此,JSON将逐渐取代XML,成为Web开发领域广泛使用的最理想的数据交换格式。
JSON的正式名称是“JavaScript Object Notation”,翻译为“JavaScript Object Notation”或“JavaScript Object Notation”。一种轻量级、基于文本的开放数据交换格式。 JSON 在 Web 开发领域发挥着重要作用。如果你想在 Web 开发领域做出巨大贡献,你需要了解 JSON。

数据交换是指两个设备之间建立连接并在它们之间传输数据的过程。

虽然 JSON 的名字中带有“JavaScript”,但它不仅可以用在 JavaScript 中,还可以用在 JavaScript、Java、PHP、Python、C++ 等中。
JSON 是纯字符串形式的数据,本身不提供使其非常适合通过网络发送的方法(函数)。 JavaScript、PHP、Java、Python、C++ 和其他编程语言都有处理 JSON 数据的内置方法。

JSON 基于 JavaScript 的一个子集(标准 ECMA-262 第三版 – 1999 年 12 月)。它是一种开放且轻量级的数据交换格式。使用独立于编程语言的文本格式存储和表示数据。易于编程。它对于人类来说很容易阅读和编写,但对于计算机来说也很容易解析和生成,并且通常用于在 Web 客户端(浏览器)和 Web 服务器之间传输数据。

在 JSON 中,数据以两种方式表示:
  • 对象:使用大括号{ }定义的键值对(名称和值)的集合。每个键值对都以键开头,后跟冒号:最后是值。用逗号分隔多个键值对,例如{"name":"IT基礎","url":"https://it-kiso.com"}
  • 数组(Array):使用方括号[ ] ,用于分隔数组中每个值的逗号定义的有序值集合。

这是一些简单的 JSON 数据:
 
{
    "Name":"IT基礎",
    "Url":"https://it-kiso.com/",
    "Tutorial":"JSON",
    "Article":[
        "JSON とは",
        "JSONP とは",
        "JSON 構文規則"
    ]
} 

JSON 的历史

JSON 由 Douglas Crockford 于 2000 年初发明,自 2001 年开始流行。那年 4 月,旧金山湾区车库里的一台计算机发送了第一个 JSON 格式的数据。这是计算史上具有开创性的时刻。


照片:道格拉斯·克罗克福德

2005年到2006年,JSON正式成为主流数据格式,雅虎、谷歌等著名网站开始广泛使用JSON格式。

2013年,ECMA International(欧洲计算机制造商协会)制定了JSON语法标准——ECMA -404

在过去的 20 多年里,JSON 已经取代 XML 成为 Web 开发的首选数据交换格式。

为什么使用 JSON?

JSON 并不是通过 Internet 传输数据的唯一方式;还有 XML 格式。 JSON 和 XML 可以完成许多相同的任务,那么为什么使用 JSON 而不是 XML?

使用 JSON 的主要原因是 JavaScript。如您所知,JavaScript 是 Web 开发的必备技术之一,而 JSON 是基于 JavaScript 的一个子集,JavaScript 默认支持 JSON,只要学习了 JavaScript,就不需要任何额外的知识了。使用 JSON 无需学习任何内容。

另一个原因是JSON比XML更容易阅读,而且JSON更简洁、更容易理解。

与 XML 相比,JSON 具有以下优点:
  • 结构简单紧凑:与XML相比,JSON遵循简单紧凑的风格。虽然 XML 对于程序员编辑和读取很有用,但它相对复杂。
  • 更快:JSON 解析速度比 XML 快(XML 与 HTML 非常相似,因此解析大型 XML 文件时需要消耗额外的内存)。在存储相同的数据时,JSON格式占用的存储空间更少。
  • 可读性强:JSON的结构很容易让程序员阅读。

JSON 的缺点

没有什么是完美的,像这样的 JSON 也不例外。
  • 仅一种数字类型:JSON 仅支持 IEEE-754 双精度浮点格式,因此您无法使用 JSON 来存储许多编程语言中的各种数字类型。
  • 无日期类型:JSON 只能将日期表示为日期字符串(例如,1970-01-01)或时间戳(例如,1632366361)。
  • 无注释:您无法向 JSON 添加注释。
  • 冗余:虽然 JSON 比 XML 更简洁,但它并不是最紧凑的数据交换格式。具有大量数据或特殊用途的服务应使用更高效的数据格式。

JSON应该如何存储?

JSON 数据可以保存在 .json 格式的文件中(类似于 .txt 格式;都是纯文本文件)。 JSON 数据还可以以字符串的形式存储在数据库、cookie 和会话中。

使用保存的 JSON 数据也非常容易。在各种编程语言中,您可以在 JavaScript 中使用 JSON.parse() 和 JSON.stringify(),在 PHP 中使用 json_decode() 和 json_encode( )。

什么时候使用 JSON?

现在我们对 JSON 有了一个简单的了解,让我们看看什么时候使用它。

1) 定义接口

JSON 使用最多的地方是 Web 开发领域,目前的数据接口通常返回 JSON 格式的数据,例如:
  • 使用 Ajax 异步加载数据。
  • RPC远程调用。
  • 前端和后端分离,数据从后端返回。
  • 开发API,例如Yahoo和Rakuten的一些开放接口。

这些接口通常提供接口文档,概述接口调用的方法、所需的参数以及返回的数据。

2)序列化

当程序运行时,所有变量都存储在内存中,如果重新启动程序或服务器宕机,数据就会丢失。一般来说,运行时变量不是很重要,如果丢失了,那就丢失了。您可能需要为下一个程序启动或其他程序保存一些数据。

这种将数据保存在内存中的过程称为序列化。序列化在Python中称为pickling,在其他语言中也称为序列化、封送、扁平化等,意思都是一样的。

通常,序列化是将程序中的对象直接转换为可以存储或传输的数据,但这保留了对象的类型信息,并且不能跨语言使用。例如,使用Python将数据序列化到硬盘上,然后使用Java。读取这个数据,此时读取失败,因为不同的编程语言对对象信息进行序列化,如果之前转换成JSON格式就不会出现这个问题。

3)生成token

令牌有多种格式。您可以使用 JSON、字符串、数字等生成令牌。JSON 格式的令牌最典型的格式是JWT (JSON Web 令牌)。

随着技术的发展,分布式Web应用程序越来越流行,通过Session管理用户登录状态的成本也逐渐发展起来。获取Redis中缓存的信息。用户信息。后来,随着 JWT 的出现,不再需要经过 Redis 缓存,直接读取基于 token 存储的用户信息来进行身份验证变得更加容易。

4)配置文件

也可以使用 JSON 作为程序配置文件,但比较典型的是npm (Node.js 包管理工具)的 package.json 包管理配置文件。
 
{
    "name": "server",
    "version": "0.0.0",
    "private": true,
    "main": "server.js",
    "scripts": {
        "start": "node ./bin/www"
    },
    "dependencies": {
        "cookie-parser": "~1.4.3",
        "debug": "~2.6.9",
        "express": "~4.16.0",
        "http-errors": "~1.6.2",
        "jade": "~1.11.0",
        "morgan": "~1.9.0"
    }
} 

提示:虽然您可以使用 JSON 来定义配置文件,但 JSON 不允许您添加注释,从而导致配置文件的可读性较差。

总结
JSON是一种轻量级的数据交换格式,它基于JavaScript的一个子集,它使用完全独立于编程语言的格式来表示数据,并且可以跨语言和平台使用,它具有简洁、清晰的特点。因此,JSON将逐渐取代XML,成为Web开发领域广泛使用的最理想的数据交换格式。