序列化:stringify()
将JavaScript对象序列号为JSON字符串
反序列化:parse()
将JSON字符串解析为原生JavaScript值

序列化选项:
JSON.stringify()除了可以序列化JavaScript对象外,还可以接收另外两个参数,这两个参数用于指定以不同的方式序列化JavaScript对象,第一个参数是过滤器,第二个参数是选项,表示是否在 json字符串中保留缩进

  1. 过滤器:可以是一个数组也可以是一个函数

    例如: 
    一个数组:

     1 var user= {
    2 title: '解忧杂货店',
    3 author: '东野圭吾',
    4 edition: 10,
    5 date: '2012-03'
    6 };
    7 var jsonText =JSON.stringify(user);
    8 console.log(jsonText);
    9 var jsonText0 =JSON.stringify(user,["title","author"]);
    10 console.log(jsonText0);

    控制台返回的数据如下:

    一个函数:

     1 var user= {
    2 title: '解忧杂货店',
    3 author: '东野圭吾',
    4 edition: 10,
    5 date: '2012-03'
    6 };
    7 var jsonText =JSON.stringify(user,function(key,value){
    8 switch(key){
    9 case "title":
    10 return 'xxxx';
    11 case "author":
    12 return undefined;
    13 default:
    14 return value;
    15 }
    16 });
    17 console.log(jsonText)

    控制台返回的数据如下:

  2. 字符串缩进

    JSON.stringify()方法的第三个参数用于控制结果中的缩进和空白符

    例如:

     1 var user= {
    2 title: '解忧杂货店',
    3 author: '东野圭吾',
    4 edition: 10,
    5 date: '2012-03'
    6 };
    7 var jsonText0 =JSON.stringify(user);
    8 console.log(jsonText0)
    9 var jsonText =JSON.stringify(user,null,4);
    10 console.log(jsonText)

    控制台返回的结果:

    由上面可以看出缩进与不缩进的结果,相对来说缩进的可读性强;
    注意:缩进的值范围在10 以内大于10的都讲自动装换为10
    如果将上面的第三个参数的数字换成符号也可以例如换成 “--”
    效果如下:

    注意:这里的缩进字符串最长不能超过10个字符,如果超过10个字符,结果中只出现前10个字符

  3. toJSON()方法

    作为JSON.stringify中第二个参数(函数过滤器)补充 
    方法: date.toJSON()
    返回任何序列化的值
    例如:

     1 var user= {
    2 title: '解忧杂货店',
    3 author: '东野圭吾',
    4 edition: 10,
    5 date: '2012-03',
    6 toJSON: function(){
    7 //只返回author
    8 return this.author;
    9 }
    10 };
    11 var jsonText0 =JSON.stringify(user);
    12 console.log(jsonText0)

    控制台返回的结果:

  4. toJSON()作为JSON.stringify中第二个参数(函数过滤器)补充,理解内部顺序很重要。
    假设把一个对象传入JSON.stringify() 序列化对象的顺序如下:
    (1)如果存在toJSON()方法而且能通过它取得有效的值,则调用该方法。否则,按默认顺序执行序列化
    (2)如果提供了第二个参数,应用这个函数过滤器,传入的函数过滤器的值是第(1)步返回的值。
    (3)对第(2)步 返回的每个值进行相应的序列化。
    (4)如果提供了第三个参数,执行相应的格式化操作。

 解析选项:

JSON.parse()方法也可以接收另一个参数,改参数是一个函数,讲在买个键值对上调用,为区别JSON.stringify()方法接收的过滤器(有可能是函数的函数(replace)),在这里的函数叫还原函数(reviver)。接收两个参数,一个键和一个值,并且需要返回一个值。

例如:

 1 var user= {
2 title: '解忧杂货店',
3 author: '东野圭吾',
4 edition: 10,
5 date: '2012-03',
6 releaseDate: new Date(2017,11,28)
7 };
8
9 var jsonText1 =JSON.parse(jsonText0,function(key,value){
10 if(key == "releaseDate"){
11 return new Date(value)
12 }else{
13 return value
14 }
15 });
16 console.log(jsonText1.releaseDate)

控制台返回的结果:

简单来说就这样我们就解析后的内容中获取需要的年月日等内容。

JSON--stringify() 和 JSON--parse() 方法的更多相关文章

  1. JSON.stringify()和JOSN.parse()

    JSON.stringify()跟JSON.parse() 终于把这两个方法搞清楚了!!! JSON.tringify():把一个json数据转化成JSON string JSON.stringify ...

  2. json.stringify()的妙用,json.stringify()与json.parse()的区别

    一.JSON.stringify()与JSON.parse()的区别 最近做项目,发现JSON.stringify()使用场景真的挺多,我们都知道JSON.stringify()的作用是将 JavaS ...

  3. ZH奶酪:JavaScript中的JSON.stringify() and JSON.parse()

    JSON.stringify() JSON.stringify()可以将任意的JavaScript值序列化成JSON字符串. 语法 JSON.stringify(value[, replacer [, ...

  4. 关于JSON.stringify()与JSON.parse()

    一.JSON.stringify()与JSON.parse()的区别 JSON.stringify()的作用是将js值转换成JSON字符串,而JSON.parse()是将JSON字符串转换成一个对象. ...

  5. JSON 解析器。JSON.stringify和JSON.parse

    以前用的是JavaScript  的eval. 现在JSON 提供了JSON.stringify和JSON.parse两个函数. JSON.parse用于从一个字符串中解析出json对象. JSON. ...

  6. JSON.parse()与JSON.stringify()和eval()使用方法详解

    在和后端对接口的时候,遇到了一个问题 就是series里面数据变量进行拼接的时候,data数据里面全部是数值int类型的 但是因为某些需求需要让他进行某个数据之前的数据都为空 我试过用空字符串和und ...

  7. JSON.stringify()、JSON.parse()和eval(string)

    1.JSON.stringify()用于从一个对象解析出字符串,eg: var obj = {"name":"奔跑的蜗牛","age":&q ...

  8. Js中JSON.stringify()与JSON.parse()与eval()详解及使用案例

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式.因为采用独立于语言的文本格式,也使用了类似于C语言家族的习惯,拥有了这些特性使使JSON称为理想的数据交换语 ...

  9. 你不知道的JSON.stringify和JSON.parse

    json是JavaScript 对象表示法(JavaScript Object Notation),是一种简单的数据格式,类似于XML,其格式为名称/值对,数据用逗号隔开,名称必须用双引号括起来.例如 ...

  10. js对json解析获取对应属性的值,JSON.stringify()和JSON.parse()

    JSON.stringify() 该方法,将一个JSON对象转化为字符串string JSON.parse() 该方法,将一个字符串转化为JSON对象object 对于JSON对象,获取其对应键值 可 ...

随机推荐

  1. Eclipse SDK目录

    SDK standard developer kits 标准的开发工具 ---类似JDK   1.add-ons 这里面保存着附加库,比如GoogleMaps,当然你如果安装了OphoneSDK,这里 ...

  2. kinova roslaunch j2s7s300_moveit_config j2s7s300_demo.launc logs1

    luo@luo-ThinkPad-W530:~$ luo@luo-ThinkPad-W530:~$ luo@luo-ThinkPad-W530:~$ luo@luo-ThinkPad-W530:~$ ...

  3. idea中copyright使用

    1,在idea中找到settings->Editor->copyright->copyright profiles,然后点击+,输入名字,在copyright text中输入模板.然 ...

  4. Python - Django - ORM 双下划线

    id 字段: id__lt:id 小于,id__gt:id 大于 import os if __name__ == '__main__': # 加载 Django 项目的配置信息 os.environ ...

  5. 【grafana报错】Singlestat "Error: Multiple Series Error"

    这个错误是因为grafana中的单值面板在同一个时刻读到了多个值.需要检查面板的json源码,检查其expr字段中的promql表达式是否会在同一时刻返回多个值. https://github.com ...

  6. 《MySQL必知必会》学习笔记——附录B 样例表

    附录B 样例表 本附录简要描述本书中所用的表及它们的用途. 编写SQL语句需要对基础数据库的设计有良好的理解.不知道什么信息存储在什么表中,表之间如何关联以及行内数据如何分解,是不可能编写出高效的SQ ...

  7. K8S - 容器编排工具Kubernetes简介

    1 - Kubernetes Kubernetes(简称K8s,用8代替8个字符"ubernete")是Google开源的一个容器编排引擎. 目前最为广泛且流行的容器编排调度系统, ...

  8. Selenium登录126邮箱,chrome定位不到账号输入框解决办法

    使用id定位Message: no such element: Unable to locate element: {"method":"id","s ...

  9. 关于/etc/rc.local

    /etc/rc.d/rc.local 用于添加开机启动命令 /etc/rc.local是/etc/rc.d/rc.local的软连接 简单来说 开机自启的

  10. supervisor+daphne+djangochannels

    参照官网配置:https://channels.readthedocs.io/en/latest/deploying.html 1.supervisor 主要是用来管理进程,比如我们想让一个进程一直执 ...