JavaScript JSON
来源:互联网 发布:淘宝花呗分期额度不够 编辑:程序博客网 时间:2024/05/20 18:45
JSON
全称JavaScript Object Notation
轻量(相较于xml)
用于数据交换的文本格式
JavaScript标准库中的原生格式,因此不需要特殊的API或者包
包含在数组或对象中的值,值的格式:
1. 简单值
a) Boolean
b) null ( undefined, infinity, -infinity, NaN)
c) number
d) 字符串
2. 复合值
a) 数组
b) Object对象
Note:(根据浏览器不同,会有不同处理和影响,经测试在firefox下是可以的)
a) 最后一个成员的后面,最好不要加逗号’,’
b) 数组或对象中的字符串最好使用双引号,而不是单引号
c) value最好由十进制表示
JSON验证程式JSLint
如果回应是JSONP格式,而不是JSON格式,那么
Var fixedResponse = response.responseText.replace(/\\’/g,”’”);
Var jsonObj = JSON.parse(fixedResponse);
JSON.parse
JSON.parse将JSON格式的字符串转换还原序列化为JSON对象
JSON_DATA = ‘{“data1”: “hello”, “data2”: “world”}’;
JSON.parse(JSON_DATA, reviver);
eval(“(“ + JSON_DATA + “)”);
//eval加()的目的在于迫使eval在处理JavaScript代码时候将括号内的表达式JSON_DATA转为对象,而不是作为statement来执行
//不加“(”“)”会出错
Note:
eval来解析执行第三方的JSON数据可能比较危险(其中可能包含恶意代码)
JSON.parse方法解析字符串本身,该方法可以捕捉JSON中的语法错误,并允许你传入一个函数,用来过滤或转换解析结果。
http://msdn.microsoft.com/zh-tw/library/ie/cc836466(v=vs.94).aspx
reviver
可选。一个转换结果的函数。将为对象的每个成员调用此函数。如果成员包含嵌套对象,则先于父对象转换嵌套对象。对于每个成员,会发生以下情况:
如果 reviver 返回一个有效值,则成员值将替换为转换后的值。
如果 reviver 返回它接收的相同值,则不修改成员值。
如果 reviver 返回 null或 undefined,则删除成员
Reviver一般用来将以JSON表示的轨迹ISO日期字符串转换为UTC格式的Date
JSON.stringify
将JavaScript值序列化为JSON文字
JSON.stringify(value[, replacer][, space]])
u Value是要转换的JavaScript值,通常是Object或者Array
u Replacer是用来转换成果的函数或者数组,递归处理的
1. 如果是函数,JSON.stringify会呼叫函数,并传入每个成员的索引键和值,并使用传回值而不是原始值,如果传回的是undefined,则表示已经排除这个成员,索引键是空字串“”
2. 如果是Array,那么只会转换阵列中有索引键值的成员,转换顺序与索引键的顺序相同
u Space加入缩排,空白,分行符号,使JSON文字更加易读
1. 如果space是数字,那么使用num的空白进行缩排
2. 如果是’\t’,则使用该字串中的字元进行缩排
3. 如果长度超过10个字元的字串,就只会使用前10个字元
Note:
如果value有toJSON方法,则JSON.stringify会返回使用该方法的返回值。如果是undefined,则不转换该值。
toJSON方法由JSON.stringify()使用,JSON.stringify会将JavaScript值序列化为JSON文字,如果toJSON方法提过给JSON.stringify,那么呼叫JSON.stringify时也会呼叫toJSON方法
Data对象有内建成员toJSON方法,将UTC转为ISO格式字串
可以重写或新定义Object的toJSON方法,以便在JSON序列化之前转为特定的类型。
举例
var arr = ['a','b'];
var str = JSON.stringify(arr);
var newArr = JSON.parse(str);
console.log(str);
console.log(newArr.pop());
var o = new Object();
o.name = "Emma";
o.Age = 25;
o.grade = 89;
o.toJSON = function(){
var obj = {};
for(var key in this){
if(typeof this[key] === 'string'){
obj[key] = this[key].toUpperCase()
}else{
obj[key] = this[key];
}
}
return obj;
};
console.log(JSON.stringify(o, toGrade, '\t'));
function toGrade(key, value)
{
if(typeof value != 'number') return value;
if(value>80 && value < 90) return "B";
if(value > 90) return "A";
if(value < 80) return "low";
}
/*
["a","b"]
b
{
"name": "EMMA",
"Age": "low",
"grade": "B"
}
*/
- 【javascript】JSON
- Javascript JSON
- javascript json
- JavaScript-JSON
- JavaScript JSON
- javascript JSON
- javascript------JSON
- [Javascript] Json
- javascript---JSON
- javascript json
- JavaScript -- JSON
- javaScript JSON
- JavaScript - JSON
- JavaScript:JSON
- JavaScript JSON
- JavaScript JSON
- JavaScript JSON
- javascript json对象javascript
- CDialog 的一些心得
- Java判断浏览器版本与类型
- 三维管道及电力线缆的创建
- sqlite3
- Hibernate异常: a different object with the same identifier value was already associated with the sessi
- JavaScript JSON
- C.V.
- POI中设置Excel单元格格式
- 熟悉border-image的一些特性
- 内网,外网路由
- Redis应用场景
- C++实现在桌面创建程序的快捷方式
- 高清视频录制工具(Bandicam)v2.1.2.740中文使用技巧
- PHP foreach循环