一 JSON.stringify

JSON.stringify() 方法是将一个JavaScript值(对象或者数组)转换为一个 JSON字符串,如果指定了replacer是一个函数,则可以替换值,或者如果指定了replacer是一个数组,可选的仅包括指定的属性。

replacer 英 [rɪ'pleɪsə]   美 [rɪ'pleɪsə]   n.替代者,复原者

语法:

JSON.stringify(value[, replacer [, space]])

1. value

将要序列化成 一个JSON 字符串的值。

2. replacer 可选

如果该参数是一个函数,则在序列化过程中,被序列化的值的每个属性都会经过该函数的转换和处理;如果该参数是一个数组,则只有包含在这个数组中的属性名才会被序列化到最终的 JSON 字符串中;如果该参数为null或者未提供,则对象所有的属性都会被序列化。

3. space 可选

指定缩进用的空白字符串,用于美化输出(pretty-print);如果参数是个数字,它代表有多少的空格;上限为10。该值若小于1,则意味着没有空格;如果该参数为字符串(字符串的前十个字母),该字符串将被作为空格;如果该参数没有提供(或者为null)将没有空格。

replacer参数可以是一个函数或者一个数组。作为函数,它有两个参数,键(key)值(value)都会被序列化。

  • 如果返回一个 Number, 转换成相应的字符串被添加入JSON字符串。
  • 如果返回一个 String, 该字符串作为属性值被添加入JSON。
  • 如果返回一个 Boolean, "true" 或者 "false"被作为属性值被添加入JSON字符串。
  • 如果返回任何其他对象,该对象递归地序列化成JSON字符串,对每个属性调用replacer方法。除非该对象是一个函数,这种情况将不会被序列化成JSON字符串。
  • 如果返回undefined,该属性值不会在JSON字符串中输出。
function replacer(key, value) {
if (typeof value === "string") {
return undefined;
}
return value;
} var foo = {foundation: "Mozilla", model: "box", week: 45, transport: "car", month: 7};
var jsonString = JSON.stringify(foo, replacer);

JSON序列化结果为 {"week":45,"month":7}.

如果replacer是一个数组,数组的值代表将被序列化成JSON字符串的属性名。

JSON.stringify(foo, ['week', 'month']);
// '{"week":45,"month":7}', 只保留“week”和“month”属性值。

space 参数用来控制结果字符串里面的间距。如果是一个数字, 则在字符串化时每一级别会比上一级别缩进多这个数字值的空格(最多10个空格);如果是一个字符串,则每一级别会比上一级别多缩进用该字符串(或该字符串的前十个字符)。

JSON.stringify({ a: 2 }, null, 4);

二 JSON.parse

JSON.parse() 方法用来解析JSON字符串,构造由字符串描述的JavaScript值或对象。提供可选的reviver函数用以在返回之前对所得到的对象执行变换(操作)。

语法:

JSON.parse(text[, reviver])

text

要被解析成JavaScript值的字符串。

reviver 可选

如果是一个函数,则规定了原始值如何被解析改造,在被返回之前。

JSON.parse('{"p": 5}', function (k, v) {
if(k === '') return v; // 如果到了最顶层,则直接返回属性值,
return v * 2; // 否则将属性值变为原来的 2 倍。
}); // { p: 10 }

最新文章

  1. cmder git bash 使用
  2. iOS相关笔记
  3. schematool -dbType mysql -initSchema hive startup failed...try this
  4. 【POJ2699】The Maximum Number of Strong Kings(二分,最大流)
  5. iOS常用---NSArray,NSMutabuleArray
  6. 遍历List过程中删除元素的正确做法(转)
  7. asp.net预定义的HttpModule
  8. svn 设置
  9. C语言中文件的读取和写入
  10. ReactNative学习实践--动画初探之加载动画
  11. Objective-C基础之──多态
  12. 娓娓道来c指针 (0)c语言的梦魇:c指针
  13. Linux - 请允许我静静地后台运行
  14. Spring Boot 参数校验
  15. Android WebKit 内核
  16. Hadoop多租户架构配置
  17. 几种流行Webservice框架
  18. PL/SQL Dev连接Oracle弹出空白提示框的解决方法分享
  19. 突破 BTrace 安全限制
  20. [Java] Design Pattern:Code Shape - manage your code shape

热门文章

  1. SpringBoot 整合Thymeleaf 、Thymeleaf常用标签
  2. ctfshow_web入门 命令执行
  3. JZOJ 1040. 【GDOI2007】夏娜的菠萝包
  4. 调式源码解决 seata 报错 can not get cluster name 问题
  5. CF1367E Necklace Assembly
  6. Win下依据端口排查步骤
  7. VSCode 国内镜像下载地址
  8. Prettier 在 Vite 项目下格式化报错
  9. dotnet core+nginx+supervisor
  10. LeetCode-1034 边界着色