json

JSON字符串转化成对象

解析

1、定义:是指将符合 JSON 语法规则的字符串转换成对象的过程。

2、不同的编程语言都提供了解析 JSON 字符串的方法,在这里主要讲解 JavaScript 中的解析方法。主要有三种:

1)- 使用 eval()

2)- 使用 JSON.parse()

3)- 使用第三方库,例如 JQuery 等


eval

eval()

1、eval() 函数的参数是一个字符串,其作用是直接执行其中的 JavaScript 代码。

2、eval() 能够解析 JSON 字符串。从这里也可以看得出,JSON 和 JavaScript 是高度嵌合的。

3、但是,现在已经很少直接使用 eval() 来解析了,如果您的浏览器版本真的是很旧,可能才需要这个方法。此外,eval() 是一个相对危险的函数,因为字符串中可能含有未知因素。在这里,作为学习,还是要知道这也是一种方法。

4、请注意 eval() 的参数,在字符串两旁加了括号,这是必须的,否则会报错。

5、因为 JSON 字符串是被大括号(“{}”)包围的,直接放到 eval() 会被当成语句块来执行,因此要在两旁加上括号,使其变成表达式。

1
2
3
4
5
6
7
<script>

var str = “console.log(‘hello’)”;

eval(sre);

</script>


JSON.parse()

1
2
3
4
5
6
7
8
9
<script>

var str = ‘{ “name” : “Geoff Lui”,“age” : 26}’; //符合JSON语法规则的字符串

var obj = JSON.parse(str);

console.log(obj);

</script>

如果输入了不符合规范的字符串,会报错
JSON.parse() 可以有第二个参数,是一个函数。此函数有两个参数:name 和 value,分别代表名称和值。当传入一个 JSON 字符串后,JSON 的每一组名称/值对都要调用此函数。该函数有返回值,返回值将赋值给当前的名称(name)。
利用第二个参数,可以在解析 JSON 字符串的同时对数据进行一些处理。


JSON对象转化为字符串

序列化

定义

指将 JavaScript 值转化为 JSON 字符串的过程。

JSON.stringify() 能够将 JavaScript 值转换成 JSON 字符串。JSON.stringify() 生成的字符串可以用 JSON.parse() 再还原成 JavaScript 值。

参数的含义

1)JSON.stringify(value[, replacer[, space]])

2)value:必选参数。被变换的 JavaScript 值,一般是对象或数组。

3)replacer:可以省略。有两种选择:函数或数组。

①- 如果是函数,则每一组名称/值对都会调用此函数,该函数返回一个值,作为名称的值变换到结果字符串中,如果返回 undefined,则该成员被忽略。

②-如果是数组,则只有数组中存在名称才能够被转换,且转换后顺序与数组中的值保持一致。

4)space:可以省略。这是为了排版、方便阅读而存在的。可以在 JSON 字符串中添加空白或制表符等。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<script>

var obj = {

name : “Geoff Lui”,

age : 26

};

console.log(obj);

var jsonstr = JSON.stringify(obj);

console.log(jsonstr);

</script>

replacer 的用法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<script>

var obj = {

name : “Geoff Lui”,

age : 26

};

console.log(obj);

var jsonstr = JSON.stringify(obj,fun);

function fun(name, value){

If (name == “age” )

value = 14;

return value;

}

console.log(jsonstr);

</script>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<script>

var obj = {

a : 1,

b : 2,

c : 3,

d :4

};

console.log(obj);

var jsonstr = JSON.stringify(obj,[“a”,”b”,”c”]);

console.log(jsonstr);

</script>

space 的用法 //排列的更加可读

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<script>

var obj = {

a : 1,

b : 2,

c : 3,

d :4

};

console.log(obj);

var jsonstr = JSON.stringify(obj,[“a”,”b”,”c”], “one”);

console.log(jsonstr);

</script>

最后更新: 2018年07月16日 12:11

原始链接: http://paris-jee.github.io/2018/07/16/json-转换/