JavaScript JSON
JSON是一种传输数据的格式(以对象为样板,本质上就是对象,但用途有区别,对象就是本地用的,json是用来传输的)
JSON.parse(); string —> json
JSON.stringify(); json —> string
JSON简单的说就是"对象",对象有很多名字,
对象在一定用法上叫"命名空间",在另外的用法上叫对象,然后在这种用法上叫"json"。
json是怎么来的呢?
还要从头说一说,一开始是为了数据传输,数据传输是为了干什么呢?前端和后端进行数据通信,进行统一配合去完成一个项目,必须要进行数据通信。
前端、后端之间,来回通信是以数据作为传输单位的,传输数据发过去再发回来(怎么发网络课会讲)。
然后发数据就有一种讲究,前端和后端发数据就好比两个人交流一样,一个人说英文另一个不认识也不行,两个人达成统一说什么语言。
所以发送数据也一样前端和后端也达成统一,数据的格式要统一,发送的数据格式要能识别。
以什么样的格式发过去,达成什么样的统一呢?
在最原始的情况下,大家达成的统一是xml(xml是种语言),以xml这种语言的格式来传输数据。
xml和html有点区别,也基本上是没什么区别,没什么区别在于都是脚本语言都是以标签组成的。
区别在哪呢?
最典型的区别就是xml比较随性,可以自定义标签。
html不可以自定义标签,都是定义好的我们去用。
xml可以自定义,比如定义一个student标签
<student> </student>
xml除了自定义以外,系统也定义了一些p标签等xml也有,但xml可以自定义,
比如定义一个student标签里面有name、age
<student> <name>Glee</name> <age>37</age> </student>
这样就是一个student自定义标签,里面有name、age都是自定义的,这有什么用呢?
但是这样好比我们新建了一个对象,标签名就是属性名里面内容就是属性值。
所以以这种方式来传输数据,是过去用的传输数据的方式,
数据名就拿标签来显示,数组值就是标签里面的内容,这么来看和对象差不多。
过去传输数据的格式就是xml的格式,导致现在数据库的基础格式也是xml的格式,但是现在传输数据不用xml了,现在用一种新的格式,过去传的格式无非就是模拟对象,现在更方便直接传对象好了。
现在传数据的格式就是对象,里面有什么数据就写什么数据
obj = { "name" : "Glee", "age" : "37" }
本来叫对象,后来应用到数据传输里面,换了一个名叫"json",
以后传输数据的格式要满足json的格式,换句话说就是满足对象的格式。
后来为了区别对象,json利用语言的特性,
语言的特性是对象的属性名可加双引号可以不加双引号,
为了规定出一种json的格式,让对象的属性名强制性的必须加双引号,如果写的是json就必须让的属性名加双引号。
正常对象的语法加不加都行,但是放到json里面规定属性名,必须加双引号就叫json了,当然它也叫对象。
传输数据怎么传呢?
传输数据不可能把这个对象直接传过去,因为不识别,
传的是二进制的文本格式,传送给后端的其实是字符串,后端传输给我们的也是字符串,
只不过这个字符串是json格式的字符串,
然后后端拿到字符串的json,会有特殊的语法,把字符串json解析成正常的json。
一、JSON.stringify()
前端怎么把json变成字符串的json呢?
有一个特殊的语法JSON.stringify()
JSON是一个静态类,类似于Math,不用构造他。
虽然JSON是一个构造函数,但是不用构造他,他身上就有很多函数。
比如stringify()函数 JSON.stringify( obj ) 把数据obj传输给后台,返回一个字符串
obj = { "name" : "Glee", "age" : "37" } console.log(JSON.stringify(obj)); // '{"name":"Glee","age":"37"}'
把json形式变成字符串形式的json形式,
如果属性名没有加双引号,会变加双引号的,写的时候我们最好还是加上,
字符串里面是json的格式,但是它是字符串类型。
二、JSON.parse()
接收一下后台的JSON,比如后端传过来一个字符串,怎么把字符串转化成JSON呢?
1). JSON上面还有一方法parse(),把字符串解析成对象
var str = '{"name":"Glee","age":"37"}'; var obj = JSON.parse(str); console.log(obj); // {name: "Glee", age: "37"}
2). 对象就可以调用它的属性名和属性值,就可以吧属性值来出来用了
var str = '{"name":"Glee","age":"37"}'; var obj = JSON.parse(str); console.log(obj); console.log(obj.name); // Glee console.log(obj['age']); // 37