JavaScript Object Notation,是一种轻量级的数据交换格式
注意:属性名要用“”括起来,构造函数中的属性名不需要用“”括起来
JSON字符串的格式一定要标准,key和value一定要用双引号包括,否则会出线解析异常
特点:轻量级,纯文本,适合不同语言间的交互
方法:
1.JSON.parse(text[,reviver])
text为JSON格式的字符串,JSON.parse 将 JSON 字符串转换为对象
在IE6/7上不支持JSON.parse
将obj对象转换成JSON格式的字符串的格式
在IE6/7上不支持JSON.
注意:属性名要用“”括起来,构造函数中的属性名不需要用“”括起来
JSON字符串的格式一定要标准,key和value一定要用双引号包括,否则会出线解析异常
特点:轻量级,纯文本,适合不同语言间的交互
方法:
1.JSON.parse(text[,reviver])
text为JSON格式的字符串,JSON.parse 将 JSON 字符串转换为对象
在IE6/7上不支持JSON.parse
解决方法:
if(!window.JSON) {
window.JSON = {
parse:function(sJSON) {
return eval('('+sJSON+')')
},
//eval就是将字符串按照js对象进行处理
stringify: function(obj){
var result = "";
for(var key in obj){
if(typeof obj[key] == "string"){
// 如果属性值是String类型,属性值需要加上双引号
result += "\"" + key + "\":\"" + obj[key] + "\",";
}else if(obj[key] instanceof RegExp){
// 如果属性是正则表达式,属性值只保留一对空大括号{}
result += "\"" + key + "\":{},";
}else if(typeof obj[key] == "undefined" || obj[key] instanceof Function){
// 如果属性值是undefined, 该属性被忽略。忽略方法。
}else if(obj[key] instanceof Array){
// 如果属性值是数组
result += "\"" + key + "\":[";
var arr = obj[key];
for(var item in arr){
if(typeof arr[item] == "string"){
// 如果数组项是String类型,需要加上双引号
result += "\"" + arr[item] + "\",";
}else if(arr[item] instanceof RegExp){
// 如果属数组项是正则表达式,只保留一对空大括号{}
result += "{},";
}else if(typeof arr[item] == "undefined" || arr[item] instanceof Function){
// 如果数组项是undefined, 则显示null。如果是函数,则显示null?。
result += null +",";
}else if(arr[item] instanceof Object){
//如果数组项是对象(非正则,非函数,非null),调用本函数处理
result += this.stringify(arr[item]) +",";
}else{
result += arr[item] + ",";
}
}
result = result.slice(0,-1)+"],"
}else if(obj[key] instanceof Object){
// 如果属性值是对象(非null,非函数,非正则),调用本函数处理
result += "\"" + key + "\":" + this.stringify(obj[key]) + ",";
}else{
result += "\"" + key + "\":" + obj[key] + ",";
}
}
// 去除最后一个逗号,两边加{}
return "{" + result.slice(0,-1) + "}";
}
};
}
2.JSON.stringify(obj)
将obj对象转换成JSON格式的字符串的格式
在IE6/7上不支持JSON.
code
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>JSON</title>
</head>
<body>
<script type="text/javascript">
var onepiece = {
id:1,
nick:"caomao",
name:"lufei",
status:"captain",
years:"18"
};
var test = '{"id":1,"nick":"caomao","name":"lufei","status":"captain","years":"18"}';
var op1 = JSON.stringify(onepiece);
// var op2 = JSON.parse(onepiece);
console.log('op1');
console.log(op1);
// {"id":1,"nick":"caomao","name":"lufei","status":"captain","years":"18"}
var op2 = JSON.stringify(onepiece, ['id','name','status']);
console.log(op2)
//{"id":1,"name":"lufei","status":"captain"}只显示JSON对象中的部分信息
var op3 = JSON.parse(test);
//JSON.parse 将 JSON 字符串转换为对象
console.log(op3);
// Object {id: 1, nick: "caomao", name: "lufei", status: "captain", years: "18"}
debugger;
</script>
</body>
</html>