文档章节

json - 序列化选项

lemos
 lemos
发布于 2016/11/23 22:30
字数 597
阅读 2
收藏 0
点赞 0
评论 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) 如果提供了第三个参数,执行相应的格式化。

© 著作权归作者所有

lemos
粉丝 6
博文 177
码字总数 86270
作品 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
彻底精通JSON

关于JSON,必须清晰的一点是它是一种数据结构,而非一种编程语言。属于看起来它与javascript有相同的语言格式,但是JSON并不从属于javascript。 其他语言也可以无障碍的使用JSON,因为他们拥有...

颜卿今天Coding了吗
2016/04/28
0
0
flatBuffer安装及使用教程

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

阿泽Aze
05/30
0
0
通过 JSON-B 自定义绑定

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

Alex Theedom
2017/12/14
0
0
JSON对象 javscript对象 解析JSON 序列化JSON

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

张超群的web之路
2016/10/30
24
0
Fastjson 的 Set类型和 WriteClassName 选项引起的BUG

使用 fastjson 序列化一个JAVABEAN对象时,如果属性有 Set 表示的集合的时候,如果写JSON时,设置了 WriteClassName 选项,Set 属性值会被写成 "Set[{}]",反序列化的时候,一定会出错。 解决...

阿影
2014/01/15
0
0
C结构体工具 DirectStruct 更新至 v1.1.0

ver 1.1.1 2014-10-07 calvin 新增综合示例 testclient,testserver 新增综合示例 test_db2json ver 1.1.0 2014-09-20 calvin * 新增自动生成代码 : XML序列化/反序列化函数 * 新增自动生成代...

calvinwilliams
2014/10/08
1K
3
DirectStruct 更新至 v1.1.2,代码自动生成工具

ver 1.1.2 2014-10-10 calvin ESQL新增自动生成SQLACTION代码 修正了XML、JSON序列化/反序列化函数中的一个BUG ver 1.1.1 2014-10-07 calvin 新增综合示例 testclient,testserver 新增综合示...

calvinwilliams
2014/10/13
1K
0
DirectStruct 更新至 v1.3.0,C 结构体工具

ver 1.3.0 2015-03-14 calvin 修正了SQL条件为<>,<=,>=时的ec自动代码生成问题 把dsc命令行参数包含pqsql改成pgsql 把dsc命令行参数-sql拆成-sql-pgsql,-sql-oracle 新增JSON紧缩风格的序列化...

calvinwilliams
2015/03/14
1K
2

没有更多内容

加载失败,请刷新页面

加载更多

下一页

JVM学习手册(一):查看堆内存使用情况以及排错

平时出现内存溢出以及死锁,一般处理方式都是查看日志,找到抛出异常的代码行,然后本地分析代码,但是这样对于线上排查十分糟糕,这段时间在研究JVM发现了几个比较好的工具和指令. 1.针对频繁GC和...

勤奋的蚂蚁
1分钟前
0
0
Java IO类库之ObjectInputStream和ObjectOutPutStream

一、ObjectOutputStream 1 - ObjectOuputStream介绍 ObjectOutputStream(对象字节输出流),用于将一个序列化对象写入到创建ObjectOutputStream时传入的底层字节输入流中,通过源码可知该类继...

老韭菜
14分钟前
0
0
17.TCP:传输控制协议

介绍 TCP和UDP使用同一网络层(IP),但TCP提供了面向连接、可靠的传输层服务 TCP传输给IP层的信息单位称为报文段或段 TCP通过如下方式保证可靠性: 应用数据被分割成TCP认为最合适发送的数据...

loda0128
23分钟前
0
0
重装Oracle时出现environment variable "PATH"错误的解决办法

在win7 64位下重新安装oracle 11g,一直报environment variable "PATH"的错误,按说明将path里多余的路径删除,但没办法解决。选择忽略错误继续安装,装一半会报CRC错误,还是安装失败。最好...

良言
29分钟前
0
0
TensorFlow 全连接的mnist

全连接的mnist import tensorflow as tf# 导入 MINST 数据集from tensorflow.examples.tutorials.mnist import input_datamnist = input_data.read_data_sets("MNIST_data/", one_ho......

阿豪boy
29分钟前
0
0
JAVA 三种WebService 规范

JAVA 中共有三种WebService 规范,分别是JAX-WS(JAX-RPC)、JAXM&SAAJ、JAX-RS。 1. Jaxws(掌握) JAX-WS 的全称为 Java API for XML-Based Webservices ,早期的基于SOAP 的JAVA 的Web 服务...

onedotdot
48分钟前
0
0
将博客搬至CSDN

将博客搬至CSDN

xpbob
49分钟前
1
0
Aidl进程间通信详细介绍

目录介绍 1.问题答疑 2.Aidl相关属性介绍 2.1 AIDL所支持的数据类型 2.2 服务端和客户端 2.3 AIDL的基本概念 3.实际开发中案例操作 3.1 aidl通信业务需求 3.2 操作步骤伪代码 3.3 服务端操作...

潇湘剑雨
今天
0
0
python爬虫日志(3)下载图片

import urlliburl='https://xxx.jpg'#图片地址res=urllib.request.urlopen(url)#此函数用于对url的访问data=res.read() #字节流with open(r'D:\1.jpg',"wb") as code: c...

茫羽行
今天
0
0
vue中$emit的用法

1、父组件可以使用 props 把数据传给子组件。 2、子组件可以使用 $emit 触发父组件的自定义事件。 vm.$emit( event, arg ) //触发当前实例上的事件 vm.$on( event, fn );//监听event事件后运...

JamesView
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部