文档章节

json - 序列化选项

lemos
 lemos
发布于 2016/11/23 22:30
字数 597
阅读 2
收藏 0

JSON.stringify() 除了序列化 js对象外,还可以传入两个参数: 第一个 参数是一个过滤器,可以是一个函数,也可以是一个数组。 第二个参数是一个选项,表示是否在json中保持缩进。


1. 过滤结果

  • 这个例子中,传入了一个数组参数。表示只序列化在数组中列出的值。
var book = {
    "title": "Profession JavaScript",
    "authors": [
        "NIcholas C. Zakas"
    ],
    editon:3,
    year:2011
};

var jsonText = JSON.stringify(book, ["title", "edition"]);

console.log(jsonText);
  • 这个例子,传入了一个函数作为参数,表示按照函数中的处理方式进行序列化。(形参为 (key,value)。 其中, key只能是字符串,当数据结构不是键值对结构时,可以将key设为空字符串。
var jsonText = JSON.stringify(book, function (key, value) {
    switch (key) {
        case "authors":
            return value.join(",");
        case "year":
            return 5000;
        case "edition":
            return undefined;
        default:
            return value;
    }
});

console.log(jsonText);

2. 字符串缩进

  • JSON.stringify() 的第三个参数用于控制结果中的缩进和空白符。 如果这个参数是一个数值,表示每个级别缩进的空格数。(最大缩进空格数是10)
var book = {
    "title": "Profession JavaScript",
    "authors": [
        "NIcholas C. Zakas"
    ],
    editon: 3,
    year: 2011
};


var jsonText = JSON.stringify(book, null, 4);

console.log(jsonText);
  • 如果缩进参数是一个字符串,而非一个数值。那么,这个字符串将被用作缩进符,而非空格。缩进字符可以设置为制表符、- - 或者其他任意字符。(注意,缩进字符串不得超过10个字符长。)
var book = {
    "title": "Profession JavaScript",
    "authors": [
        "NIcholas C. Zakas"
    ],
    editon: 3,
    year: 2011
};


var jsonText = JSON.stringify(book, null,"- -");

console.log(jsonText);

3. toJSON() 方法

  • 在某些情况下,可以通过在对象中调用toJSON( ) 方法,可以返回自身的json数据格式。 比如,原生Date对象上有一个toJSON( ) 方法,可以将js的Date对象转换成 ISO 8601 日期字符串。(这与在Date 对象上调用 toISOString( ) 的结果一样。
var book = {
    "title": "Profession JavaScript",
    "authors": [
        "NIcholas C. Zakas"
    ],
    edition: 3,
    date: new Date(),
    year: 2011,
    toJSON: function () {
        return this.title +","+ this.date;
    }
};

var jsonText = JSON.stringify(book);

console.log(jsonText);

4. 序列化对象的执行顺序

(1) 如果存在toJSON( ) 方法,且能通过它获取有效的值,则调用该方法。否则,按默认顺序执行序列化。
(2) 如果提供了第二个参数,则把(1)中得到的值传入这个函数过滤器。
(3) 如果提供了第三个参数,执行相应的格式化。

© 著作权归作者所有

共有 人打赏支持
上一篇: json - 解析选项
下一篇: json - JSON对象
lemos
粉丝 7
博文 180
码字总数 91421
作品 0
芜湖
后端工程师
私信 提问
JSON Binding API 简介

JSON Binding API 入门,第 1 部分 JSON Binding API 简介 了解 JSON-B 的默认特性和自定义注解、运行时配置等 Alex Theedom 2017 年 12 月 07 日发布 系列内容: 此内容是该系列 1 部分中的...

Alex Theedom
2017/12/07
0
0
fastjson 1.1.9 发布

fastjson已转至github托管,地址。 Bug [FASTJSON-114] - Map对象反序列化处理@type特别属性行为不当 Improvement [FASTJSON-109] - 添加WriteSlashAsSpecial选项 [FASTJSON-110] - 设置Wri...

咖啡碼農
2011/11/04
1K
2
flatBuffer安装及使用教程

1、什么是flatBuffer: FlatBuffers为Google发布的一个跨平台,提供多种语言接口,注重性能和资源使用的序列化类库。目前该类库提供C++, C#, C, Go, Java, JavaScript, PHP, and Python语言接...

阿泽Aze
05/30
0
0
JSON对象 javscript对象 解析JSON 序列化JSON

在ajax交互的时候我们只需要拿到数据(主要是JSON)去渲染处理逻辑就可以,不需要对JSON有详细的了解,但是有时候后台接口开发没有完成,需要写伪代码的时候我们可以自己手动造一些假数据,这样...

张超群的web之路
2016/10/30
24
0
通过 JSON-B 自定义绑定

JSON Binding API 入门,第 2 部分 通过 JSON-B 自定义绑定 通过和注解运行时配置来自定义 JSON 绑定 Alex Theedom 2017 年 12 月 14 日发布 系列内容: 此内容是该系列 2 部分中的第 # 部分...

Alex Theedom
2017/12/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

FinderWeb2.4.9 程序员的看日志利器

FinderWeb2.4.9 程序员的看日志利器

吴伟祥
1分钟前
0
0
PHP的pcntl进程控制教程一(pcntl_fork)

pcntl 简介 PHP的进程控制支持实现了Unix方式的进程创建, 程序执行, 信号处理以及进程的中断。 进程控制不能被应用在Web服务器环境,当其被用于Web服务环境时可能会带来意外的结果。 这份文档...

hansonwong
6分钟前
0
0
php扩展模块安装

11月21日任务 11.32 php扩展模块装安装 /usr/local/php/bin/php -m //查看模块 下面安装一个redis的模块 cd /usr/local/src/ wget https://codeload.github.com/phpredis/phpredis/zip/deve......

zgxlinux
7分钟前
0
0
windows下使用IDEA创建VUE项目

1.环境搭建 1.1检测是否安装好nodejs和npm 检测命令 node -v npm -v 如果没有安装需要先安装 nodejs的下载路径:https://nodejs.org/en/download/ 在Windows上安装时务必选择全部组件,包括勾...

文文1
14分钟前
1
0
Mybatis插件plugin应用测试,替换查询sql

1、新建插件 import org.apache.ibatis.executor.CachingExecutor;import org.apache.ibatis.executor.Executor;import org.apache.ibatis.executor.parameter.ParameterHandler;im......

jcc_codingBoy
19分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部