JSON的使用

Json复习

JSON的使用

JSON的两种格式

1
{"name":"JSON","address":"北京市西城区","age":25}//JSON的对象格式的字符串
1
[{"name":"JSON","address":"北京市西城区","age":25}]//数组对象格式

区别与联系:

对象格式和数组对象格式唯一的不同则是在对象格式的基础上加上了[],再来看具体的结构,可以看出都是以键值对的形式出现的,中间以英文状态下的逗号(,)分隔。

两个重要函数

JSON.stringify()

JSON.parse()

例子

JSON字符串:

1
var str1 = '{ "name": "cxh", "sex": "man" }';

JSON对象:

1
var obj1= { "name": "cxh", "sex": "man" };

JSON字符串转换为JSON对象

要使用上面的str1,必须使用下面的方法先转化为JSON对象:

由JSON字符串转换为JSON对象:

1
2
3
4
5
var obj = eval('(' + str1+ ')');
console.log(obj);
//或者
var obj = JSON.parse(str1);
console.log(obj);

一般,从后台传入到前台的是json字符串,不是真正的json对象,因此需要使用eval函数转换。 将字符串转换为json对象使用函数eval,或JSON.parse(str)。其中:eval(“(“ + str+ “)”);

SON对象转化为JSON字符串

使用toJSONString()或者全局方法JSON.stringify()将JSON对象转化为JSON字符串

1
2
3
var last=JSON.stringify(obj1); //将JSON对象转化为JSON字符
console.log(last);
typeof last;

Js 中对 Json 数组的常用操作

1
2
3
4
5
6
var persons = [
{name: "tina", age: 14},
{name: "timo", age: 15},
{name: "lily", age: 16},
{name: "lucy", age: 16}
]

根据对象属性值得到相应对象

1
2
3
4
5
6
7
8
9
10
11
12
//1. 获取 name 等于 lily 的对象
var lily=persons.filter((p)=>{
return p.name=="lily";
});
console.log(lily);

//注:filter()方法返回的是一个数组
var twins = persons.filter((p) => {
return p.age == 16;
});
console.log(twins);
// 打印结果 [{name: "lily", age: 16},{name: "lucy", age: 16}]

删除其中一个对象

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// 删除 name 等于 tina 的对象,利用splice()方法

// 1. 首先我们要得到这个对象
var tina = persons.filter((p) => {
return p.name == "tina";
});

//2. 其次得到这个对象在数组中对应的索引
var index = persons.indexOf(tina[0]);

//3. 如果存在则将其删除,index > -1 代表存在
index > -1 && persons.splice(index, 1);

console.log(persons);

修改其中一个对象的属性值

1
2
3
4
5
6
7
8
9
//将 name 等于 timo 的 age 修改为 20

//1. 得到 timo 对象
var timo = persons.filter((p) => {
return p.name == "timo";
});

//2. 修改age
timo[0].age = 20;

往数组中添加一个对象

1
persons.push({name: "similar", age: 18});

js 数组转json,json转数组

1
2
3
4
5
6
7
//数组转json串
var arr = [1,2,3, { a : 1 } ];
JSON.stringify( arr );

//json字符串转数组
var jsonStr = '[1,2,3,{"a":1}]';
JSON.parse( jsonStr );

js解析json数组

解析json数组即对JSONArray的遍历

对于标准的json数组如

1
var result=[{"flag":1,"macId":"2","mbId":0,"userName":"XXX"},{"flag":1,"macId":"1","mbId":1,"userName":"YYY"}]

进行遍历的时候,可以直接通过for循环遍历这个数组,有两种方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
//1
for (var i = 0; i < result.length; i++) {
//result[i]表示获得第i个json对象即JSONObject
//result[i]通过.字段名称即可获得指定字段的值
console.log(result[i].userName);
}

//2
for(var i in result){
//表示遍历数组,而i表示的是数组的下标值,
//result[i]表示获得第i个json对象即JSONObject
//result[i]通过.字段名称即可获得指定字段的值
result[i].userName;
}

对于不标准的json数组如

1
var result2={"datas":[{"flag":1,"macId":"2","mbId":0,"userName":"XXX"},{"flag":1,"macId":"1","mbId":1,"userName":"YYY"}]};

进行遍历之前得先解析出标准的json数组格式即[{},{}]

var data= result2.datas;

1
2
3
4
5
6
7
8
9
10
11
12
//1.  for (var i = 0; i < data.length; i++) {
//data[i]表示获得第i个json对象即JSONObject
//data[i]通过.字段名称即可获得指定字段的值
data[i].userName;
}
//2.
for(var i in data){
//表示遍历数组,而i表示的是数组的下标值,
//data[i]表示获得第i个json对象即JSONObject
//data[i]通过.字段名称即可获得指定字段的值
data[i].userName;
}

本作品采用 知识共享署名 2.5 中国大陆许可协议 进行许可,欢迎转载,但转载请注明来自JayMo,并保持转载后文章内容的完整。本人保留所有版权相关权利。
本文永久链接:http://jaymo666.github.io/2018/03/28/JSON的使用/