JSON--stringify() 和 parse() 方法
序列化:stringify()
将JavaScript对象序列号为JSON字符串
反序列化:parse()
将JSON字符串解析为原生JavaScript值
序列化选项:
JSON.stringify()除了可以序列化JavaScript对象外,还可以接收另外两个参数,这两个参数用于指定以不同的方式序列化JavaScript对象,第一个参数是过滤器,第二个参数是选项,表示是否在 json字符串中保留缩进
- 过滤器:可以是一个数组也可以是一个函数
例如:
一个数组:var user= {
title: '解忧杂货店',
author: '东野圭吾',
edition: 10,
date: '2012-03'
};
var jsonText =JSON.stringify(user);
console.log(jsonText);
var jsonText0 =JSON.stringify(user,["title","author"]);
console.log(jsonText0);控制台返回的数据如下:
一个函数:
var user= {
title: '解忧杂货店',
author: '东野圭吾',
edition: 10,
date: '2012-03'
};
var jsonText =JSON.stringify(user,function(key,value){
switch(key){
case "title":
return 'xxxx';
case "author":
return undefined;
default:
return value;
}
});
console.log(jsonText)控制台返回的数据如下:
- 字符串缩进
JSON.stringify()方法的第三个参数用于控制结果中的缩进和空白符
例如:
var user= {
title: '解忧杂货店',
author: '东野圭吾',
edition: 10,
date: '2012-03'
};
var jsonText0 =JSON.stringify(user);
console.log(jsonText0)
var jsonText =JSON.stringify(user,null,4);
console.log(jsonText)控制台返回的结果:
由上面可以看出缩进与不缩进的结果,相对来说缩进的可读性强;
注意:缩进的值范围在10 以内大于10的都讲自动装换为10
如果将上面的第三个参数的数字换成符号也可以例如换成 “--”
效果如下:注意:这里的缩进字符串最长不能超过10个字符,如果超过10个字符,结果中只出现前10个字符
- toJSON()方法
作为JSON.stringify中第二个参数(函数过滤器)补充
方法: date.toJSON()
返回任何序列化的值
例如:var user= {
title: '解忧杂货店',
author: '东野圭吾',
edition: 10,
date: '2012-03',
toJSON: function(){
//只返回author
return this.author;
}
};
var jsonText0 =JSON.stringify(user);
console.log(jsonText0)控制台返回的结果:
toJSON()作为JSON.stringify中第二个参数(函数过滤器)补充,理解内部顺序很重要。
假设把一个对象传入JSON.stringify() 序列化对象的顺序如下:
(1)如果存在toJSON()方法而且能通过它取得有效的值,则调用该方法。否则,按默认顺序执行序列化
(2)如果提供了第二个参数,应用这个函数过滤器,传入的函数过滤器的值是第(1)步返回的值。
(3)对第(2)步 返回的每个值进行相应的序列化。
(4)如果提供了第三个参数,执行相应的格式化操作。
解析选项:
JSON.parse()方法也可以接收另一个参数,改参数是一个函数,讲在买个键值对上调用,为区别JSON.stringify()方法接收的过滤器(有可能是函数的函数(replace)),在这里的函数叫还原函数(reviver)。接收两个参数,一个键和一个值,并且需要返回一个值。
例如:
var user= {
title: '解忧杂货店',
author: '东野圭吾',
edition: 10,
date: '2012-03',
releaseDate: new Date(2017,11,28)
}; var jsonText1 =JSON.parse(jsonText0,function(key,value){
if(key == "releaseDate"){
return new Date(value)
}else{
return value
}
});
console.log(jsonText1.releaseDate)
控制台返回的结果:
简单来说就这样我们就解析后的内容中获取需要的年月日等内容。
JSON--stringify() 和 parse() 方法的更多相关文章
- JOSN的stringify()和parse()方法
JOSN的stringify()和parse()方法使用,stringify()把对象序列化,parse()把JSON字符串解析为js对象 <script> var book = { ti ...
- JSON的stringify和parse方法
一.JSON.parse() 方法用于将一个 JSON 字符串转换为对象. 以下代码为将字符串解析为对象,然后再赋值给对象 //页面初始化完成加载,option是传递的参数 onLoad: funct ...
- JSON对象的stringify()和parse()方法
1.stringify() ---- JavaScript对象序列化为JSON字符串 eg1. var book = {title: 'JS', authors: ['Van'], edition:3 ...
- JSON.stringify的使用方法
语法: JSON.stringify(value [, replacer] [, space]) value:是必须要的字段.就是你输入的对象,比如数组啊,类啊等等. replacer:这个是可选的. ...
- JSON stringify and parse
来源 : http://javascript.ruanyifeng.com/stdlib/date.html //解析json也可以传入一个方法, 基本上和stringify差不多,不过是逆序的, 要 ...
- JSON对象和字符串之间的相互转换JSON.stringify(obj)和JSON.parse(string)
在Firefox,chrome,opera,safari,ie9,ie8等高级浏览器直接可以用JSON对象的stringify()和parse()方法. JSON.stringify(obj)将JSO ...
- 小tips:JSON对象和字符串之间的相互转换JSON.stringify(obj)和JSON.parse(string)
在Firefox,chrome,opera,safari,ie9,ie8等高级浏览器直接可以用JSON对象的stringify()和parse()方法. JSON.stringify(obj)将JSO ...
- JSON对象和字符串之间的相互转换 – JSON.parse() 和 JSON.stringify()
所有现代浏览器都支持 JSON 对象,有两个非常有用的方法来处理 JSON 格式的内容: JSON.parse(string) :接受一个 JSON 字符串并将其转换成一个 JavaScript 对象 ...
- JSON.stringify和JSON.parse的用法
用法概述 所有的现代浏览器都支持 JSON 对象,有两个非常有用的方法来处理 JSON 格式的内容: JSON.parse(string) 接受一个 JSON 字符串并将其转换成一个 JavaScri ...
- JSON.parse 和 JSON.stringify 详解
JSON格式,(简写JavaScript Object Notation),是一种用于数据交换的文本格式,书写简单. 基于JavaScript原生语法,能够序列化对象.数组.数值.字符串.布尔值和 n ...
随机推荐
- 2017-11-22 Intall Ubuntu Log
重启之后进入不了系统,安装工具check defect也不好用(问题尚不清楚),决定重做系统 直接用u盘(Universal_USB_Installer制作的安装工具,之前用都没有问题)安装,前面一起 ...
- 照虎画猫写自己的Spring——依赖注入
前言 上篇<照虎画猫写自己的Spring>从无到有讲述并实现了下面几点 声明配置文件,用于声明需要加载使用的类 加载配置文件,读取配置文件 解析配置文件,需要将配置文件中声明的标签转换为F ...
- FreeMarker 快速入门
FreeMarker 快速入门 FreeMarker是一个很值得去学习的模版引擎.它是基于模板文件生成其他文本的通用工具.本章内容通过如何使用FreeMarker生成Html web 页面 和 代码自 ...
- 史上最全常用正则表达式(Javascript公众号推文)
2017-04-13 zxin JavaScript很多不太懂正则的朋友,在遇到需要用正则校验数据时,往往是在网上去找很久,结果找来的还是不很符合要求.所以我最近把开发中常用的一些正则表达式整理了一下 ...
- 【原创】python爬虫获取网站数据并存入本地数据库
#coding=utf-8 import urllib import re import MySQLdb dbnumber = MySQLdb.connect('localhost', 'root', ...
- 在ThinkPHP中使用常量解决路由常规地址不安全传送数据问题
在ThinkPHP搭建项目的同时,会考虑到后期对静态页面的维护问题, 在项目的不断完善的同时,会有大量图片,css文件,以及js文件等一些容易修改.添加.或者删除的资源 如果在中后期对各个静态页面,j ...
- 逆向实用干货分享,Hook技术第二讲,之虚表HOOK
逆向实用干货分享,Hook技术第二讲,之虚表HOOK 正好昨天讲到认识C++中虚表指针,以及虚表位置在反汇编中的表达方式,这里就说一下我们的新技术,虚表HOOK 昨天的博客链接: http://www ...
- “核弹级”Android漏洞Janus,黑客可以任意篡改App
美国时间12月9日,Google披露了一个名为"Janus"安卓漏洞.该漏洞可以让攻击者绕过安卓签名机制,从而让攻击者对App进行篡改,安卓5.0到8.0等个版本系统均受影响. 顶 ...
- CCF-201512-3-画图
问题描述 试题编号: 201512-3 试题名称: 画图 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 用 ASCII 字符来画图是一件有趣的事情,并形成了一门被称为 ASC ...
- Keepalived实现双机热备
第一步.安装.网上很多源码安装的步骤.咱们这里以最快的方式 . [Shell] 纯文本查看 复制代码 ? 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 ...