json

Json是javasscript的子集,但它是独立的,能够被各种现代编程语言用于交换数据,是一种数据格式
 
string字符串只能用双引号包裹,单引号会出现错误。
 
JSON对象和数组:
{
“name”: “Nicholas”,
“age”: 29,
“school”: {
“name”: “Merrimack College”,
“location”: [“North Andover",  "MA”]
}
}
 
把javascript对象转化为JSON结构  var jsonText = JSON.stringify(object);        函数,prototype成员和属性值为undefined的都会被忽略掉
stringify函数第二个参数用于可选择性转化:
var jsonText = JSON.stringify(book, [“title”, “edition”]);              // 只转化对象中的title和edition属性
也可以使用函数过滤
var book = {
“title”: “Professional JavaScript”,
“authors”: [
“Nicholas C. Zakas”
],
edition: 3,
year: 2011
};
var jsonText = JSON.stringify(book, function(key, value)   {         //过滤函数会同样应用到属性里面的对象
switch(key){
case “authors”:
return value.join(“,”)
case “year”:
return 5000;
case “edition”:
return undefined;
default:
return value;
}
});
结果:{“title”:”Professional JavaScript”,”authors”:”Nicholas C. Zakas”,”year”:5000}
第三个参数可以进行排版
var jsonText = JSON.stringify(book,null, 4);              //进行排版,每一行缩进四格,而且会换行
 
在对象里指定toJSON方法也可以指定返回的数据(In fact, the native Dateobject has a toJSON()method that automatically converts JavaScript Dateobjects into an ISO 8601 date string (essentially, the same as calling toISOString()on the Dateobject) )
var book = {
“title”: “Professional JavaScript”,
“authors”: [
“Nicholas C. Zakas”     
],
edition: 3,
year: 2011,
toJSON: function(){
return this.title;
}
};
var jsonText = JSON.stringify(book);         //只返回title的字符串而不是对象
 
JSON.stringify()执行顺序:
1、调用 toJSON() 方法,如果可用就返回具体的值
2、如果提供了第二个参数,步骤1返回的值会被传入
3、将步骤2返回的值合适地进行序列化
4、如果提供了第三个参数,就会按照该参数进行合适地排版格式化
 
把JSON转化为javascript对象:var javascriptObj = JSON.parse(jsonObject);
javascriptObj 和 jsonObject是分开的两个对象,之间没有联系
JSON.parse()方法也可以传入一个函数对每一个属性进行操作
var book = {
“title”: “Professional JavaScript”,
“authors”: [
“Nicholas C. Zakas”
],
edition: 3,
year: 2011,
releaseDate: new Date(2011, 11, 1)
};

var jsonText = JSON.stringify(book);

var bookCopy = JSON.parse(jsonText, function(key, value){
if (key == “releaseDate”){
return new Date(value);     //重新将值转化为Date类型,这样才能用该类型下的相关方法
} else {
return value;
}
});
alert(bookCopy.releaseDate.getFullYear());
 
在json中,用于转义
如果需要嵌入到html的<script>标签中,则使用</script>
 
Int类型不允许0开头,在有些语言里面0开头代表八进制
 
使用 JSON.parse 可以避免输出危险和没有正确格式化的json,避免直接使用
var myData = eval('(' + myJSONText + ')');
 
原文地址:https://www.cnblogs.com/chuangweili/p/5163602.html