Go to comments

JavaScript JSON


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

三、看百度后端基本的数据格式

image.png



Leave a comment 0 Comments.

Leave a Reply

换一张