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

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

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

    例如: 
    一个数组:

     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)

    控制台返回的数据如下:

  2. 字符串缩进

    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个字符

  3. 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)

    控制台返回的结果:

  4. 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() 方法的更多相关文章

  1. JOSN的stringify()和parse()方法

    JOSN的stringify()和parse()方法使用,stringify()把对象序列化,parse()把JSON字符串解析为js对象 <script> var book = { ti ...

  2. JSON的stringify和parse方法

    一.JSON.parse() 方法用于将一个 JSON 字符串转换为对象. 以下代码为将字符串解析为对象,然后再赋值给对象 //页面初始化完成加载,option是传递的参数 onLoad: funct ...

  3. JSON对象的stringify()和parse()方法

    1.stringify() ---- JavaScript对象序列化为JSON字符串 eg1. var book = {title: 'JS', authors: ['Van'], edition:3 ...

  4. JSON.stringify的使用方法

    语法: JSON.stringify(value [, replacer] [, space]) value:是必须要的字段.就是你输入的对象,比如数组啊,类啊等等. replacer:这个是可选的. ...

  5. JSON stringify and parse

    来源 : http://javascript.ruanyifeng.com/stdlib/date.html //解析json也可以传入一个方法, 基本上和stringify差不多,不过是逆序的, 要 ...

  6. JSON对象和字符串之间的相互转换JSON.stringify(obj)和JSON.parse(string)

    在Firefox,chrome,opera,safari,ie9,ie8等高级浏览器直接可以用JSON对象的stringify()和parse()方法. JSON.stringify(obj)将JSO ...

  7. 小tips:JSON对象和字符串之间的相互转换JSON.stringify(obj)和JSON.parse(string)

    在Firefox,chrome,opera,safari,ie9,ie8等高级浏览器直接可以用JSON对象的stringify()和parse()方法. JSON.stringify(obj)将JSO ...

  8. JSON对象和字符串之间的相互转换 – JSON.parse() 和 JSON.stringify()

    所有现代浏览器都支持 JSON 对象,有两个非常有用的方法来处理 JSON 格式的内容: JSON.parse(string) :接受一个 JSON 字符串并将其转换成一个 JavaScript 对象 ...

  9. JSON.stringify和JSON.parse的用法

    用法概述 所有的现代浏览器都支持 JSON 对象,有两个非常有用的方法来处理 JSON 格式的内容: JSON.parse(string) 接受一个 JSON 字符串并将其转换成一个 JavaScri ...

  10. JSON.parse 和 JSON.stringify 详解

    JSON格式,(简写JavaScript Object Notation),是一种用于数据交换的文本格式,书写简单. 基于JavaScript原生语法,能够序列化对象.数组.数值.字符串.布尔值和 n ...

随机推荐

  1. Drools文档(六) 用户手册

    用户手册 基础 无状态的知识Session Drools规则引擎拥有大量的用例和功能,我们要如何开始?你无须担心,这些复杂性是分层的,你可以用简单的用例来逐步入门. 无状态Session,无须使用推理 ...

  2. MVC中提交包含HTML代码的页面处理方法(尤其是在使用kindeditor富文本编辑器的时候)

    针对文本框中有HTML代码提交时,mvc的action默认会阻止提交,主要是出于安全考虑.如果有时候需求是要将HTML代码同表单一起提交,那么这时候我们可以采取以下两种办法实现: 1.给Control ...

  3. 关于Python在Linux、Mac和Windows上的安装方法总结

    一.Linux下安装python   1.python源码安装包下载地址:   https://www.python.org/downloads/source/   2.下载完tar.xz压缩包以后, ...

  4. jq获取被选中的option的值。jq获取被选中的单选按钮radio的值。

    温故而知新,一起复习下jq的知识点. (1) jq获取被选中的option的值 <select id="select_id"> <option value=&qu ...

  5. 二、Hadoop学习笔记————架构学习

    1.成百上千台服务器组成集群,需要时刻检测服务器是否故障 2.用流读取数据更加高效快速 3.存储节点具有运算功能,省略了服务器之间来回传数据的网络带宽限制 4.一次写入,多次访问,不修改数据 5.多平 ...

  6. tensorflow初探

    TensorFlow是一个采用数据流图,用于数值计算的开源软件库.自己接触tensorflow比较的早,可是并没有系统深入的学习过,现在TF在深度学习已经成了"标配",所以打算系统 ...

  7. mysql的复杂查询,连接数据库

    1.MySQL的工具:Navicat 优点:方便2.数据库的导入 mysqldump -u用户名 -p密码 数据库名称 > 导出文集路径 #结构+数据 mysqldump -u用户名 -p密码 ...

  8. 谈谈form-data请求格式

    最近一直都比较忙,坚持月月更新博客的计划不得中止了,今天好不容易抽出点时间来说说最近项目中遇到的一个问题,有关request post请求格式中的multipart/form-data格式. 引言 最 ...

  9. Webapi调用

    C# webapi 路由名称不能跟area名称相同,否则出现404 action找不到的问题???

  10. poj 2769 Reduced ID Numbers 同余定理

    链接:http://poj.org/problem?id=2769 题意:寻找数m,是的对于n个数的余数不同 思路:暴力,优化:同余部分不用测试 代码: #include <iostream&g ...