JavaScript | JSON基本格式
—————————————————————————————————————————————————————————
JSON
语法
"use strict";
// 简单值
"hello,world" // 必须使用双引号 // 对象
{
"name": "hugh",
"age": 12,
"school":
{
"name": "xzcit",
"location": "North Andover,MA"
}
} // 数组
[25, "hi", true] // 组合使用
[
{
"title": "Professional JavaScript",
"author": [
"Nicholas C.Zakas"
],
"edition": 3,
"year": 2002
},
{
"title": "Professional JavaScript",
"author": [
"Nicholas C.Zakas"
],
"edition": 4,
"year": 2003
},
{
"title": "Professional JavaScript",
"author": [
"Nicholas C.Zakas"
],
"edition": 5,
"year": 2004
}]
序列化JSON对象
- stringify() - 把js对象序列化为json字符串
- stringify()序列化对象的顺序
- 如果存在toJSON方法并且能通过它取得有效的值,则调用该方法。否则返回对象本身
- 如果提供了第二个参数,应用这个函数过滤器,传入函数过滤器的值是步骤1返回的值
- 对步骤2返回的值进行相应的序列化
- 如果提供了第三个参数,执行相应的格式化
"use strict";
var book = [{
"title": "Professional JavaScript1",
"author": [
"Nicholas C.Zakas",
"hugh"
],
"edition": 3,
"year": 2002
}];
// 使用JSON.stringify()把一个js对象序列化为一个json字符串,保存在变量jsonText中
var jsonText = JSON.stringify(book);
console.log(jsonText);
console.log(typeof jsonText); // string // 过滤结果
var jsonText = JSON.stringify(book, ["title", "year"]); // 过滤只保留title和year
console.log(jsonText); // 修改返回结果
var jsonText = JSON.stringify(book, function(key, value) { // 传入键值对
switch (key) {
case "author":
return value.join("||"); // 将数组连接成为字符串
case "year":
return 5000;
case "edition":
return undefined; // 返回undefined属性被忽略
default:
return value; // 其他返回本身值
}
});
console.log(jsonText); // 字符串缩进
var jsonText = JSON.stringify(book, null, 4); // 缩进4个空格,最大缩进10格
console.log(jsonText);
var jsonText = JSON.stringify(book, null, " - -"); // 特殊符号缩进
console.log(jsonText); // toJSON()方法
var book = [{
"title": "Professional JavaScript1",
"author": [
"Nicholas C.Zakas",
"hugh"
],
"edition": 3,
"year": 2002,
"toJSON": function() { // toJSON可以作为函数过滤器的补充
return this.title;
}
}];
var jsonText = JSON.stringify(book);
console.log(jsonText);
解析JSON对象
- 早起JSON解析器是使用eval()函数,但eval()可能会执行恶意代码
- parse() - 把json字符串解析为原生js值
"use strict";
var book = {
"title": "Professional JavaScript1",
"author": [
"Nicholas C.Zakas",
"hugh"
],
"edition": 3,
"year": 2002,
"releaseDate": new Date(2011, 11, 1)
};
var jsonText = JSON.stringify(book);
console.log(jsonText);
var bookCopy = JSON.parse(jsonText, function(key, value) {
if (key == "releaseDate") {
return new Date(value);
} else {
return value;
}
})
console.log(bookCopy.releaseDate);
console.log(bookCopy.year); //使用 JSON.parse 反序列化 ISO 格式的日期字符串, 将返回Date格式对象。
var jsonText = '{ "hiredate": "2008-01-01T12:00:00Z", "birthdate": "2008-12-25T12:00:00Z" }';
var dates = JSON.parse(jsonText, dateReviver);
function dateReviver(key, value) {
var a;
if (typeof value === 'string') {
a = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/.exec(value);
if (a) {
return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4], +a[5], +a[6]));
}
}
return value;
};
console.log(dates.birthdate.toUTCString());
JavaScript | JSON基本格式的更多相关文章
- javascript中字符串格式json如何转化成json对象
什么是JSON JSON(JavaScript Object Notation)是一种优美的JavaScript对象创建方法.JSON也是一种轻量级数据交换格式.JSON非常易于人阅读与编写,同时利于 ...
- javascript中字符串格式转化成json对象记录
什么是JSON JSON(JavaScript Object Notation)是一种优美的JavaScript对象创建方法.JSON也是一种轻量级数据交换格式.JSON非常易于人阅读与编写,同时利于 ...
- JSON数据表示格式简介(JavaScript对象表示法)
[1] JSON简介 > JSON全称 JavaScript Object Notation > 类似于JS中对象的创建的方法 > JSON和XML一样,都是一种表 ...
- 4种解决json日期格式问题的办法
4种解决json日期格式问题的办法 开发中有时候需要从服务器端返回json格式的数据,在后台代码中如果有DateTime类型的数据使用系统自带的工具类序列化后将得到一个很长的数字表示日期数据,如下 ...
- 解决json日期格式问题的3种方法
这篇文章主要介绍了解决json日期格式问题的3种方法 ,需要的朋友可以参考下 开发中有时候需要从服务器端返回json格式的数据,在后台代码中如果有DateTime类型的数据使用系统自带的工具类序列化后 ...
- JavaScript校验图片格式及大小
<!DOCTYPE html> <html> <head> <title>JavaScript校验图片格式及大小</title> <s ...
- json日期格式问题的办法
//json日期转换 格式(2015-01-01) <input class="easyui-datebox" name="sbdj_txtShebaoka_Lin ...
- JOSN学习总结<二> JSON的格式与语法
今晚又下班早!!嘿嘿,继续JOSN的总结吧!!!!有人说这么简单还有必要写吗???我觉得“眼里过十遍不如手里过一遍”!!有错误之处请指正!!共同学习下!!!!废话不说了,进入今晚的正题: <二& ...
- JS对象与json字符串格式
<head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8&quo ...
随机推荐
- linux——(1)初识linux
linux有窗口管理员环境和纯文本界面环境,同时linux默认提供6个Terminal来让用户登录.crtl+alt+F1-6可自由切换.其中如果窗口管理员环境处于运行状态,那么可以按crtl+alt ...
- poj 1068(模拟题)
Parencodings Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 23545 Accepted: 13802 De ...
- [BZOJ4813][CQOI2017]小Q的棋盘(DP,贪心)
4813: [Cqoi2017]小Q的棋盘 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 804 Solved: 441[Submit][Statu ...
- 【数论】【快速幂】【扩展欧几里得】【BSGS算法】bzoj2242 [SDOI2011]计算器
说是BSGS……但是跟前面那题的扩展BSGS其实是一样的……因为模数虽然是质数,但是其可能可以整除a!!所以这两者其实是一样的…… 第一二种操作不赘述. #include<cstdio> ...
- [转] FileSystemXmlApplicationContext、ClassPathXmlApplicationContext和XmlWebApplicationContext简介
今天在用Spring时遇到一个问题,提示找不到applicationContext.xml文件.原来是在加载这个文件时调用的方法不太合适,所以造成了程序找不到项目下的xml配置文件. 我们常用的加载c ...
- css3背景属性 background-size 对背景图进行缩小放大
background-size需要两个值,它的类型可以是像素(px).百分比(%)或是auto,还可以是cover和contain.第一个值为背景图的width,另外一个值用于指定背景图上的heigh ...
- .Net 2014 Connect() 相关文章合集
微软在11月中旬的Connect()研讨会中公布了一系列 2015年的发展规划,今天在MSDN Blog上看到了一篇比较全的相关文章合集,这里转录一下,感兴趣的朋友可以看看. Announcement ...
- WPF中的动画——(五)关键帧动画
与 From/To/By 动画类似,关键帧动画以也可以以动画形式显示目标属性值. 和From/To/By 动画不同的是, From/To/By 动画只能控制在两个状态之间变化,而关键帧动画则可以在多个 ...
- openwrt web管理luci界面修改
转自:http://blog.csdn.net/user_920/article/details/8504979 以前都没听过openwrt和luci,只接触过简单的php语言.由于工作原因,要修改下 ...
- java访问ad域
1.活动目录(AD) Active Directory 是用于 Windows Server 的目录服务.它存储着网络上各种对象的有关信息,并使该信息易于管理员和用户查找及使用.Active Dire ...