您的位置:首页 > Web前端 > JavaScript

JSON与js对象

2017-04-10 22:40 309 查看

JSON

JSON是基于文本的数据格式,相对于基于二进制的数据。所以JSON在传递的时候是传递符合JSON这种格式的字符串,我们常会称为“JSON字符串”。

JSON是轻量级的数据格式,如
xml
需要用到很多标签,而JSON比较轻量,即相同数据,以JSON的格式占据的带宽更小,这在有大量数据请求和传递的情况下是有明显优势的。

JSON被广泛地用于数据交换。以前端js进行ajax的POST请求为例,后端PHP处理请求为例:

1. 前端构造一个js对象,用于包装要传递的数据,然后将js对象转化为JSON字符串,再发送请求到后端;

2. 后端PHP接收到这个JSON字符串,将JSON字符串转化为PHP对象,然后处理请求。

两种语言都能把JSON这种数据格式很容易地转化为自己能理解的数据结构

JSON和js对象的区别

JSON是可以传输的,因为它是文本格式,但是js对象是没办法传输的。

在语法上,JSON也会更加严格。JSON的键名必须是加双引号,JSON的值只能是数值(10进制)、字符串(双引号)、布尔值和null,也可以是数组或者符合JSON要求的对象,不能是函数、NaN, Infinity, -Infinity和undefined,最后一个属性后面不能有逗号,数字前导0不能用,小数点后必须有数字。

虽然JSON的

JSON基本使用

通常我们使用JSON.stringify,传入一个对象,将js对象转化成JSON字符串

JSON.stringify({"name": "sysuzhyupeng","age": 24});


如果第二个参数是一个函数,那么序列化过程中的每个属性都会被这个函数转化和处理

var info = {
name: 'sysuzhyupeng',
age: 24
}
var str = JSON.stringify(info, function(key, value){
if(key == 'age'){
return value + 10;
} else{
//如果你把这个else分句删除,那么结果会是undefined
return value;
}
})
str // "{"name":"sysuzhyupeng","age":34}"


第二个参数还可以传入数组来过滤key值

var info = {
name: 'sysuzhyupeng',
age: 24
}
var str = JSON.stringify(info, ['name']);
str // "{"name":"sysuzhyupeng"}"


JSON.parse()
如果参数JSON字符串不是合法的字符串的话,那么这个函数会抛出错误,所以如果你在写一个后端返回JSON字符串的脚本,最好调用语言本身的JSON字符串相关序列化函数

以上所说的两个函数都不兼容IE7以下的浏览器
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息