json|青训营笔记

90 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 5 天

1JSON简介

JSON(Javascript Object Notation)是一种轻量级的数据交换语言,以文字为基础,具有自我描述性且易于让人阅读。尽管JSON是Javascript Standard ECMA-262 3rd Edition – December 1999的一个子集,但JSON是独立于语言的文本格式,并且采用了类似于C语言家族的一些习惯, 这些特性使JSON成为理想的数据交换语言。

JSON与XML最大的不同在于XML是一个完整的标记语言,而JSON不是。JSON由于比XML更小、更快,更易解析,以及浏览器的内建快速解析支持,使得其更适用于网络数据传输领域。

在讲解JSON的数据结构之前, 我们先来一段简单的样例JSON数据:

[    {        "precision": "zip",        "Latitude":  37.7668,        "Longitude": -122.3959,        "Address":   "",        "City":      "SAN FRANCISCO",        "State":     "CA",        "Zip":       "94107",        "Country":   "US"    },    {        "precision": "zip",        "Latitude":  37.371991,        "Longitude": -122.026020,        "Address":   "",        "City":      "SUNNYVALE",        "State":     "CA",        "Zip":       "94085",        "Country":   "US"    }]

JSON建构于两种结构:

  • 键值对的集合(A collection of name/value pairs): 在不同的语言中, 他们被理解为: object(Javascript), struct(Golang), Dictinary(Python), 以及哈希表(hash table), 有键列表(keyed list), 或者关联数组(associative array).
  • 值的有序列表(An ordered list of values): 在大部分语言中,它被理解为数组(array).

其中值可以包含如下类型, 并且这些结构可以嵌套:

  • 字符串(string): 由双引号包围的任意数量Unicode字符的集合,使用反斜线转义, 一个字符(character)即一个单独的字符串(character string)
  • 数值(number): 同时包含整数和浮点数
  • 布尔值(booleans): 布尔值包含: true和false
  • 空(null): 空 对象(object): 键值对的集合
  • 数组(array): 值的有序列表

这些都是常见的数据结构。事实上大部分现代计算机语言都以某种形式支持它们。这使得一种数据格式在同样基于这些结构的编程语言之间交换成为可能。