JSON,JSON 字符串,JSON 数据类型介绍

我被代码海扁署名-非商业-禁演绎
阅读 4:13·字数 1268·发布 

JSON

JSON(JavaScript Object Notation)是一种轻量级的数据格式,是 JavaScript 语言的一个子集。JSON 在各种编程语言中得到了广泛支持,并被普遍的运用到各种业务场景。

JSON 支持的数据类型

JSON 支持一些基本的 JavaScript 数据类型,包括数字类型,字符串类型,布尔类型,空值,数组,对象。至于更为复杂的数据类型,比如日期时间,或含有运算的表达式,则是不被接受的。

数字类型

JSON 中的数字可以是整数或者小数,不能是非数字NaN,允许采用 JavaScript 中的科学计数法,比如,1.23e+3-1.23e+51.23e-3,其中符号e后的+可以省略。JSON 仅支持十进制数字,你不能像在 JavaScript 中一样书写类似于0b1010一样的二进制数字,或类似于0xA09C一样的十六进制数字。

字符串类型

JSON 仅支持采用"括住的字符串,不支持使用'`。字符串中可以出现以\开头的转义序列,比如,"姓名\t年龄""喜极而泣:\uD83D\uDE02"

布尔类型

JSON 中的布尔类型与 JavaScript 保持一致,可以是truefalse

空值

JSON 中的空值为null,与 JavaScript 保持一致。

数组

JSON 中的数组与 JavaScript 数组类似,但其包含的值的数据类型只能是 JSON 所支持的,比如,["你好!",123,true]

对象

JSON 中的对象与 JavaScript 对象类似,但其包含的内容主要通过键值对来进行描述,值的数据类型只能是 JSON 所支持的,键只能是采用"括住的字符串,比如,{"age":12,"name":"一个好心人"}

转义

想要详细了解转义,你可以查看转义,转义字符,转义序列介绍一节。

JSON 字符串

顾名思义,JSON 字符串是指符合 JSON 格式的字符串,这些字符串可以存在于某个文件中,或作为代码书写的字面量。

JSON 字符串与 JavaScript 对象之间的区别

这个问题似乎没有必要解答,JSON 字符串与 JavaScript 对象的区别较为明显,前者是string类型,后者是object类型,JSON 字符串必须严格遵守 JSON 的标准,而 JavaScript 对象则比较随意,其包含的值的数据类型可以不在 JSON 标准内。

值,数据类型

关于字面量,你可以查看值的表示一段。

下面的 JavaScript 常量json存储了一个 JSON 字符串。

json.js
const json = '{"id":1234,"name":"小书屋 001 号"}'

包含了学生信息的 JSON 字符串,被存储在文件students.json中。

json/students.json
[
	{ "name": "小小", "age": 12 },
	{ "name": "小白", "age": 13 }
]

JSON 字符串转换

在支持 JSON 的语言中,一般都存在一些函数或方法,用于将 JSON 字符串转换为某种其他的数据类型,或执行相反的操作。这是比较容易理解的,因为没人愿意直接读取或写入字符串包含的数据。

JavaScript 提供了parsestringify两个方法来进行 JSON 字符串的转换。

json.js
// 存储了植物信息的 JSON 字符串
const plant_json = '{"name":"一棵大树","height":5}'
// 将 JSON 字符串转换为一个 JavaScript 对象
const plant = JSON.parse(plant_json)

// 修改信息,并将 JavaScript 对象转换为 JSON 字符串 plant.height = 7 console.log(JSON.stringify(plant))
{"name":"一棵大树","height":7}

源码

json.js·codebeatme/programming·GitHub
json/students.json·codebeatme/programming·GitHub