JavaScript 对象与 JSON 对象的相互转换
来源:互联网 发布:外国人北京奥运会知乎 编辑:程序博客网 时间:2024/06/03 17:14
一、全局JSON对象
ES5定义了全局对象JSON,对解析JSON的行为制定了规范。
JSON对象有两个方法:stringify() 和 parse()。
二、JavaScript 对象序列化为 JSON对象
JSON.stringify( js对象 [, 过滤器] [, 选项])
二三参数可选,js对象中的函数和原型成员将被忽略,值为undefined的属性也被跳过。
默认情况下,返回的JSON不包含任何空格字符和缩进。
var book = { title: "Professional JavaScript", authors: ["Nicholas C. Zakas"], edition: 3, year: 2011 };var jsonText = JSON.stringify(book);
过滤器为数组:JSON.stingify() 的结果只包含数组中列出的属性。
var book = { title: "Professional JavaScript", authors: ["Nicholas C. Zakas"], edition: 3, year: 2011 };var jsonText = JSON.stringify(book, ["title", "edition"]);jsonText的值为 {"title": "Professional JavaScript", "edition": 3}
过滤器为函数:函数接收两个参数,键名和值(key, value)。函数体中根据键名处理对应的值。
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; }});序列化后的 jsonText 值为:{"title": "Professional JavaScript", "authors": "Nicholas C. Zakas", "year": 5000}
第三个参数用于控制结果的缩进:
参数为数值 ----- 表示缩进的空格数。
var book = { title: "Professional JavaScript", authors: ["Nicholas C. Zakas"], edition: 3, year: 2011 };var jsonText = JSON.stringify(book, null, 4);jsonText 中的字符串:
{
"title": "Professional JavaScript",
"authors": [
"Nicholas C. Zakas"
],
"edition": 3,
"year": 2011
}
"title": "Professional JavaScript",
"authors": [
"Nicholas C. Zakas"
],
"edition": 3,
"year": 2011
}
参数为字符串 ----- 表示使用该字符串进行缩进。
var book = { title: "Professional JavaScript", authors: ["Nicholas C. Zakas"], edition: 3, year: 2011 };var jsonText = JSON.stringify(book, null, " - -");jsonText 中的字符串:
{
--"title": "Professional JavaScript",
--"authors": [
----"Nicholas C. Zakas"
--],
--"edition": 3,
--"year": 2011
}
--"title": "Professional JavaScript",
--"authors": [
----"Nicholas C. Zakas"
--],
--"edition": 3,
--"year": 2011
}
(还可以为对象定义 toJSON() 方法,实现对其进行自定义序列化的需求。)
三、JSON对象解析为 JavaScript 对象
JSON.parse(json对象 [, 还原函数])
还原参数接收两个参数,键和值。如果返回undefined,则表示从结果中删除相应的键;如果返回其他值,则将该值插入到结果中。
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); } else { return value; }});
阅读全文
0 0
- JavaScript 对象与 JSON 对象的相互转换
- javascript json字符串与对象相互转换
- JavaScript对象与JSON字符串的相互转换
- JavaScript对象与JSON字符串的相互转换
- JavaScript对象与JSON字符串的相互转换
- JavaScript对象与JSON字符串的相互转换
- json字符串与对象的相互转换-javascript/jQuery
- json字符串与对象的相互转换-javascript/jQuery
- JSON与java对象的相互转换
- json串与对象的相互转换
- Java对象与Json的相互转换
- Json与对象的相互转换
- json对象与字符串...的相互转换
- JavaScript对象和JSON对象的相互转换
- Buffer对象与JSON对象相互转换
- Java对象与JSON对象相互转换
- javascript中json对象与字符串相互转换
- JSON字符串与JSON对象的相互转换(在JavaScript和Java中)
- Qt学习05——隐式共享
- IOS真机调试时启动图黑屏问题解决
- Android 性能优化(一)
- matlab之cat:以特定维度连接矩阵
- Composer 将~/.composer/vendor/bin 添加到PATH
- JavaScript 对象与 JSON 对象的相互转换
- Memcache学习总结
- android:maxHeight,android:maxWidth失效,不起作用
- win7下IIS的安装和配置
- iOS 图形编程总结
- win7重启
- 375. Guess Number Higher or Lower II dynamic programming
- 改变linux DNS解析顺序
- ReactNative tarbarAndorid工具实战