序列化: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. 123457123457#0#-----com.tym.YuErBaiKeTYM--前拼后广--育儿百科

    com.tym.YuErBaiKeTYM--前拼后广--育儿百科

  2. Spring MVC初始化

      整个Spring MVC的初始化,配置了DispatcherServlet和ContextLoaderListener,那么它们是如何初始化Spring IoC容器上下文和映射请求上下文的呢?所以 ...

  3. 【翻译】Flink window

    本文翻译自flink官网:https://ci.apache.org/projects/flink/flink-docs-release-1.9/dev/stream/operators/window ...

  4. Andrew Ng机器学习课程10

    Andrew Ng机器学习课程10 a example 如果hypothesis set中的hypothesis是由d个real number决定的,那么用64位的计算机数据表示的话,那么模型的个数一 ...

  5. ATT&CK框架学习

     ATT&CK模型 ATT&CK是分析攻击者行为(即TTPs)的威胁分析框架.ATT&CK框架核心就是以矩阵形式展现的TTPs,即Tactics, Techniques and ...

  6. 【转】那些年用过的Redis集群架构(含面试解析)

    引言 今天是2019年2月12号,也就是大年初八,我接到了高中同学刘有码面试失利的消息. 他面试的时候,身份是某知名公司的小码农一枚,却因为不懂自己生产上Redis是如何部署的,导致面试失败! 人间惨 ...

  7. [转帖]进程上下文频繁切换导致load average过高

    进程上下文频繁切换导致load average过高 2016年6月26日admin发表评论阅读评论 http://www.361way.com/linux-context-switch/5131.ht ...

  8. java当中JDBC当中请给出一个Oracle DataSource and SingleTon例子

    [学习笔记] 6.Oracle DataSource and SingleTon: import oracle.jdbc.pool.OracleDataSource;import java.sql.C ...

  9. hashCode和identifyHashCode的区别

    API: System类提供一个identifyHashCode(Object o)的方法,该方法返回指定对象的精确hashCode值,也是根据该对象的地址计算得到的HashCode值.当某个类的ha ...

  10. csdn博客整理

    @TOC 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页.如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown ...