你笑了

你的笑,是星星跳跃浪花的笑

0%

JSON

JSON

[1] DOC https://www.json.org/json-zh.html

  • 基于文本的、独立于编程语言的、结构化数据表示格式

    文本上下文中存在的一种数据表示格式(对应用JS编程语言就是字符串类型中存在的一种数据表示格式)

    • 狭义上指表示结构化数据的格式(本质)

    • 广义上指用该格式表示的数据(外延)

  • 通常用于数据交换

    在编程语言层面处理时,都是以字符串(文本)形式存在

概念

Object literal

指大括号 ({}) 扩起来的零或多个键值对

独立于编程语言的定义

String literal

指双引号 (“) 或单引号 (‘) 括起来的零或多个字符

JSON object

  • 不存在通常所说的JSON对象这个概念

  • 准确说应该是 面向对象编程语言中 用于处理JSON格式数据的 内置对象。将数据在 字符串(文本)上下文 和 对象上下文 之间转换,即由 字符串字面量 转换为 对象字面量

    • 字符串(文本)上下文即从外部获取到的JSON格式数据(http请求、文件、数据库等),此时数据以字符串类型存在。
    • 对象上下文即以面向对象编程语言中的对象类型来处理该数据
  • JS中用于处理 JSON格式数据 的内置对象为JSON,包括parsestringify 两个方法

    • parse 将 JSON格式的字符串 转换为 对象字面量

    • stringify 将 对象字面量 转换为 JSON格式的字符串

      1
      2
      JSON.stringify({name:'xm',age:12})
      "{\"name\":\"xm\",\"age\":12}"

JSON string

  • 双引号扩起来的字符串

    内部的双引号则需要转义

参考

格式

根节点为对象或数组

是双引号括起来的字符串(string)、数值(number)、truefalsenull、对象(object)或者数组(array)

数据类型

对象

无序键值对的集合,键只能是字符串。以花括号{开始,以}结束,键值之间用冒号分割,键值对之间用逗号分割

数组

有序值的集合,值可以为任意类型。以中括号[开始,以] 结束,值之间用逗号分割

数值

十进制数,不能有前导0,可以为负数,可以有小数部分。还可以用e或者E表示指数部分。不能包含非数,如NaN。不区分整数与浮点数。JavaScript用双精度浮点数表示所有数值

字符串

以双引号””括起来的零个或多个Unicode码位。支持反斜杠开始的转义字符序列

布尔值

空值

编码

JSON交换时必须编码为UTF-8。

转义序列可以为:“\”、“"”、“/”、“\b”、“\f”、“\n”、“\r”、“\t”,或 Unicode16 进制转义字符序列(\u后面跟随4位16进制数字)。对于不在基本多文种平面上的码位,必须用 UTF-16 代理对(surrogate pair)表示

1
2
3
{ "face": "😂" }
// or
{ "face": "\uD83D\uDE02" }

应用领域

  1. WEB应用开发

    目前JSON使用在JavaScript、Java、Node.js、C#应用的情况比较多,PHP等开发的WEB应用主要还是使用XML

  2. NoSQL数据库

    基于文档存储的NoSQL非关系型数据库选择JSON作为其数据存储格式,比较出名的产品有:MongoDB