猴塞雷

科学观察员
科学赐予人类相信真理的力量

JSON是什么?如何正确理解?

  什么是JSON

  JSON (JavaScript Object Notation, JS 对象符号) 是一种轻量级的数据相易花样。它基于 ECMAScript (w3c订定的js样板)的一个子集,采用统统独立于编程说话的文本花样来存储和外现数据。精练和了解的宗旨机合使得 JSON 成为理思的数据相易说话。 易于人阅读和编写,同时也易于机械解析和天生,并有用地提拔搜集传输出力。——百度百科

  数据传输是咱们正在敲代码时,常常碰到的一个场景,前后端交互。给数据一个联合的花样有利于咱们编写妥协析数据。

  json,是一种数据花样,正在与后端的数据交互中有较为遍及的操纵。

  JSON的成立

  JSON是 (JavaScript Object Notation, JS 对象符号),它是一种数据相易花样。正在JSON浮现之前,行家从来用XML来转达数据。由于XML是一种纯文本花样,以是它适合正在搜集上相易数据。XML自己不算庞杂,不过,加上DTD、XSD、XPath、XSLT等一大堆庞杂的样板自此,任何平常的软件开垦职员遭受XML城市感触头大了,终末行家呈现,纵然你勤劳研商几个月,也未必搞得清晰XML的样板。

  究竟,正在2002年的一天,道格拉斯·克罗克福特(DouglasCrockford)同窗为了调停深陷水深炎热同时又被某几个巨型软件企业历久诈欺的软件工程师,发了解JSON这种超轻量级的数据相易花样。

  因为JSON特别方便,很疾就风行Web宇宙,而且成为ECMA尺度。险些统统编程说话都有解析JSON的库,而正在JavaScript中,咱们能够直接利用JSON,由于JavaScript内置了JSON的解析。把任何JavaScript对象酿成JSON,即是把这个对象序列化成一个JSON花样的字符串,云云才可以通过搜集转达给其他揣度机。假设咱们收到一个JSON花样的字符串,只需求把它反序列化成一个JavaScript对象,就能够正在JavaScript中直接利用这个对象了。

  转义

  咱们正在挪用 jsonp 接口或者挪用js文献的工夫,因为文献编码差异会导致浮现乱码的题目。 假设你的文献浮现了非英文字符,假设挪用时文献编码纷歧概,同样会浮现乱码情景。

  这也即是为什么要数据联合花样的缘由。

  JSON 是实用于 Ajax 操纵圭外的一种有用花样,缘由是它使 JavaScript 对象和字符串值之间得以敏捷转换 JSON是一种转达对象的语法

  JSON是一个供给了stringify和parse法子的内置对象

  stringify将js对象转化为切合json尺度的字符串

  parse将切合json尺度的字符串转化为js对象

  JSON对值的类型和花样有端庄的规则

  复合类型的值只可是数组或对象,不行是函数、正则外达式对象、日期对象。

  方便类型的值唯有四种:字符串、数值(必需以十进制外现)、布尔值和null(不行利用NaN, Infinity, -Infinity和undefined)。

  字符串必需利用双引号外现,不行利用单引号。

  对象的键名必需放正在双引号内里。

  数组或对象终末一个成员的后面,不行加逗号。

  PS: 需求贯注的是,空数组和空对象都是及格的JSON值,null自己也是一个及格的JSON值。

  ?

  JSON 的语法法则

  JSON 的语法法则相当方便,可称得上“温婉完整”,总结起来有:

  数组(Array)用方括号(“[]”)外现。

  对象(Object)用大括号(”{}”)外现。

  名称/值对(name/value)组合成数组和对象。

  名称(name)置于双引号中,值(value)有字符串、数值、布尔值、null、对象和数组。

  并列的数据之间用逗号(“,”)分开

  实例

  JSON 数据的书写花样是:名称/值对。

  名称/值对组合中的名称写正在前面(正在双引号中),值对写正在后面,中央用冒号离隔,

  此中 值 能够是:数字(整数或浮点数)、字符串(正在双引号中)、布尔值(true或false)、数组(正在方括号中)、对象(正在花括号中)、null

  varjson= {"password":123456,"name":"myname","Booleans":true,"Array":[x,y,z],"object":{}}

  或者是嵌套利用

  ?

  转义概述

  为什么需求转义?正在js中咱们利用的js对象举行治理,不过正在与后端数据相易的工夫,咱们发送规则的json花样的字符串,以是正在给后端发送或经受数据的工夫,需求转义

  {name:"myname",password:123456}

  "{"name":"myname","password":123456}"

  此中json字符串转js对象,挪用parse法子:

  js对象 = JSON.parse(json字符串);

  js对象转json字符串,挪用stringify法子:

  json字符串 = JSON.stringify(js对象);

  正在json字符串转换成对象,又有eval_r((+json字符串+))这个法子,不过正在对主意数据举行读取时,恐怕会浮现极少不测的毛病:

  ?

  缘由:eval_r获取的json对象的值中,假设有履行代码,也将照样履行!以是若不行保障数据的安宁性,不要利用eval_r法子举行转义。

  ?

  下面是一个方便的json数据发送操纵,有兴味能够阅读一下:

  ?

  ?

  咱们常看到

  {name:"myname",password:123456}

  和

  {"name":"myname","password":123456}

  云云两种花样,JSON是什么?如何正确理解?即js对象和json,然而js对象和json有什么不雷同的地方?

  良众人搞不清晰 JSON 和 Js 对象的合连,乃至连谁是谁都不清晰。本来,能够这么理会:

  JSON 是 JS 对象的字符串外现法,它利用文本外现一个 JS 对象的音讯,素质是一个字符串。

  如

  var obj = {a: Hello, b: World}; //这是一个对象,贯注键名也是能够利用引号包裹的

  var json = {"a": "Hello", "b": "World"}; //这是一个 JSON 字符串,素质是一个字符串

  ?

  参考一:JSON官方文网

  参考二:Json对象和Json字符串的区别

  参考三:json属性名必需加引号的咨询

  参考四:json怎样理会

  1、XML是什么?

  XML与Access,Oracle和SQL Server等数据库差异,数据库供给了更强有力的数据存储和领悟才智,比如:数据索引、排序、查找、干系一概性等,XML的主旨传输数据的,而与其同属尺度通用符号说话的HTML要紧用于显示数据。本相上XML与其他数据出现办法最大的差异是:他极其方便。这是一个看上去有点琐细的好处,但恰是这点使XML不同凡响。

  2、向后台传输数据要用什么花样?

  json字符串花样,假设是一个对象要先用JSON.stringify()转义,转义成为字符串才调将数据传给后端。

  3、后端传过来的字符串数据要奈何才调转义成为一个对象?

  用JSON.parse()法子转义。

猴塞雷 版权所有,未经允许不得转载:猴塞雷 » JSON是什么?如何正确理解?
分享到: 更多 (0)