JSON


接触了web网络编程和爬虫等方面之后,经常会看到大家使用json文件来传输数据。

简介

JavaScript对象表示法(JavaScript Object Notation)是一种开放标准的文件格式使用了人类易读的格式去传送对象数据,包含了属性—值,对和数组类型(或者可串化得值)。这是一种非常普遍得数据格式用于异步浏览器——服务器交互,包括取代XML在一些AJAX-风格得系统中。

json是一种语言无关的数据格式。它来源于javascript,但2017之后很多编程语言都将包含了产生Json数据格式和解析它的代码。JSON的官方Internet媒体类型是application/ JSON。JSON文件名使用扩展名. JSON。

一个名为I-JSON(“Internet JSON”的缩写)的JSON受限概要文件试图克服JSON的一些互操作性问题。

数据类型、语法和示例

JSON的基本数据类型是:

  • Number:一种带符号的十进制数字,可以包含小数部分,也可以使用指数E表示法,但不能包含非数字,如NaN。格式不区分整数和浮点数。JavaScript对所有数值使用双精度浮点格式,但是其他实现JSON的语言对数字的编码可能有所不同。
  • String:由零个或多个Unicode字符组成的序列。字符串用双引号分隔,并支持反斜杠转义语法。
  • Boolean:值的真或假
  • Array:由零个或多个值组成的有序列表,每个值可以是任何类型的。数组使用方括号表示法,元素用逗号分隔。
  • Object:名称-值对的无序集合,其中的名称(也称为键)是字符串。因为对象是用来表示关联数组的,所以建议,虽然不是必需的,每个键在一个对象中是唯一的。对象用大括号分隔,并使用逗号分隔每对,而在每对中冒号’:'字符将键或名称与其值分隔开。
  • null:使用单词null的空值
    允许在语法元素(值和标点符号,但不允许在字符串值中)周围或之间使用有限的空格,并忽略它们。为此,只考虑四个特定字符:空格、水平制表符、换行符和回车符。特别是,字节顺序标记不能由符合规范的实现生成(尽管在解析JSON时可以接受它)。JSON不提供注释语法。

举个例子:

{
  "firstName": "John",
  "lastName": "Smith",
  "isAlive": true,
  "age": 27,
  "address": {
    "streetAddress": "21 2nd Street",
    "city": "New York",
    "state": "NY",
    "postalCode": "10021-3100"
  },
  "phoneNumbers": [
    {
      "type": "home",
      "number": "212 555-1234"
    },
    {
      "type": "office",
      "number": "646 555-4567"
    },
    {
      "type": "mobile",
      "number": "123 456-7890"
    }
  ],
  "children": [],
  "spouse": null
}

数据可移植性问题

虽然Douglas Crockford最初声称JSON是JavaScript的一个严格子集,但他的规范实际上允许无效的JSON文档。具体来说,JSON允许Unicode行终止符U+2028行分隔符和U+2029段分隔符在带引号的字符串中不转义,而ECMAScript 2018和更老版本则不允许。这是JSON只允许“控制字符”的结果。为了获得最大的可移植性,这些字符应该反斜杠转义。在生成JSONP时,这一点非常重要。
开放生态系统中的JSON交换必须使用UTF-8编码。编码支持完整的Unicode字符集,包括基本多语言平面(U+10000到U+10FFFF)之外的字符。但是,如果转义,这些字符必须使用UTF-16代理对来编写,一些JSON解析器忽略了这个细节。例如,包括Emoji字符U + 1 f602?脸上喜悦的泪水在JSON:
{ “face”: “?” }
// or
{ “face”: “\uD83D\uDE02” }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值