首页 > 其他分享 >JSON.stringify用法

JSON.stringify用法

时间:2022-10-02 15:33:05浏览次数:42  
标签:stringify replacer value 用法 JSON userInfo 序列化

1、是什么
JSON.stringify 方法将某个对象转换成 JSON 字符串形式

点击查看代码
const userInfo= {
    name: 'zs',
    age: 20
}
console.log(JSON.stringify(userInfo));
// {"name":"zs","age":20}

2、语法
语法: 可以有三个参数,第一个是传入要序列化的值,第二个为函数或者数组,第三个是文本添加缩进、空格和换行符

点击查看代码
JSON.stringify(value[, replacer[, space]])

value:第一个参数,将要序列后成 JSON 字符串的值。 replacer:【可选】第二个参数 (1) 如果该参数是一个函数,则在序列化过程中,被序列化的值的每个属性都会经过该函数的转换和处理; (2) 如果参数是一个数组,则仅转换该数组中具有键值的成员。成员的转换顺序与键在数组中的顺序一样。 (3) 如果该参数为未提供或者null ,则对象所有的属性都会被序列化。 space:【可选】第三个参数,美化文本格式,文本添加缩进、空格和换行符, (1) 如果 该参数 是一个数字,则返回值文本在每个级别缩进指定数目的空格 (2) 该参数最大值为10,如果 该参数大于 10,则文本缩进 10 个空格。 (3)该参数也可以使用非数字,如:\t。最大值为10 3、replacer用法

参数replacer: 为函数的时候

第一种情况为函数的时候,则它有两个参数,键(key) 和 值(value),并且两个参数都会被序列化。我们可以通过此函数过滤一些我们要操作的键值

点击查看代码
 - 序列化传入为对象时,若 replacer 函数返回 undefined 或者函数,则值会被忽略
点击查看代码
// repalcer 接受两个参数 key value
function replacer(key, value) {
// key value 分别为对象的每个键值对
 if (typeof value === "string") {
    return undefined ;
  }
  return value;
}
const userInfo= {
    name: 'zs',
    age: 20,
    sex: '男'
}
console.log(JSON.stringify(userInfo, replacer));
// {"age":20}
点击查看代码
- 序列化传的是数组,若 replacer 函数返回 undefined ,当前值不会被忽略,而将会被 null 取代。
点击查看代码
</details>

function replacer(key, value) {
// key value 分别为对象的每个键值对
 if (typeof value === "string") {
    return undefined ;
  }
  return value;
}
const foodList= ['苹果',1,'2',222]
console.log(JSON.stringify(foodList, replacer));
// [null,1,null,222]

参数replacer:为数组时

则仅转换该数组中具有键值的成员

点击查看代码
const userInfo= {
    name: 'zs',
    age: 20,
    sex: '男'
}
console.log(JSON.stringify(userInfo, ['name','sex']));
//{"name":"zs","sex":"男"}

4、注意点

布尔值、数字、字符串的包装对象在序列化过程中会自动转换成对应的原始值

点击查看代码
JSON.stringify([new Number(1), new String("String"), new Boolean(true)]);
// [1,"String",true]

转换的值如果存在toJSON(),则toJSON() 方法返回什么值,序列化结果就返回什么值,其余值会被自动忽略

点击查看代码
const userInfo= {
    name: 'zs',
    age: 20,
    sex: '男',
    toJSON(){
     return '我是toJSON方法的返回值'
  }
}
console.log(JSON.stringify(userInfo));
// "我是toJSON方法的返回值"

出现Date 对象,则JSON.stringify() 会把Date 的值序列化 为时间格式字符串。

点击查看代码
console.log(JSON.stringify(new Date()));
// '"2022-03-11T06:51:12.812Z"'

JSON.stringify()只能序列化可枚举属性,不可枚举的属性默认会被自动忽略

点击查看代码
const userInfo= {}
Object.defineProperty(userInfo, "work", {
    content: '遛狗',
    adrress: '广州',
    enumerable: false
});
Object.defineProperty(userInfo, "time", {
    value: '11.am',
    enumerable: true
});
console.log(JSON.stringify(userInfo));
// {"time":"11.am"}

出现Symbol值,则会被自动忽略
const userInfo= {
  name: 'zs',
  [Symbol('ageSymbol')]: 'ageSymbol'
}
console.log(JSON.stringify(userInfo));
// {"name":"zs"}

标签:stringify,replacer,value,用法,JSON,userInfo,序列化
From: https://www.cnblogs.com/johnether/p/16748840.html

相关文章

  • JavaWeb----Vue+Axios+Json的数据请求
    详细资料:https://heavy_code_industry.gitee.io/code_heavy_industry/pro001-javaweb/lecture/chapter12/verse02.html《axios+vue发送普通参数请求》  《Json》 ......
  • MySQL中EVENT的用法
    一、Event创建语法CREATEEvent[IFNOTEXISTS]event_name--创建使用createeventONSCHEDULEschedule--onschedule什么时候来执行,执行频率[ONCOMPLETION[N......
  • 使用 Python 处理 Json 数据
    一、引言:什么是JSONJSON(JavaScriptObjectNotation)是一种很常用的数据格式,它常常用在web应用程序中。它可以表示结构化的数据。下面是常见的JSON文件结构{......
  • react——webpack配置@路径——配置jsconfig.json提示
    利用addWebpackAlias配置路径constpath=require('path')const{addDecoratorsLegacy,override,addWebpackAlias}=require('customize-cra')//追加上一个装饰器mod......
  • 栈的用法详解
    栈的用法详解目录栈的用法详解利用数组模拟栈STLstack典型例题:洛谷P1427小鱼的数字游戏题目描述输入格式输出格式样例#1样例输入#1样例输出#1提示数据规模与约定栈......
  • Java泛型中<T> T 与 T的区别和用法
    有的方法返回值是<T>T,有的是T,区别在哪里?下面是一个泛型方法,<T>声明此方法有一个泛型T,也可以理解声明一个泛型方法.    下面三个T,第一个T表示是泛型,第二个......
  • Python爬虫--Requests 库用法大全
    昨晚分享了Python爬虫的基本知识,本文分享一下爬虫里面请求相关的内容:Requests用法。往期知识回顾:​​Python爬虫基本原理​​​​12.奇怪知识(1)--Matlab爬虫获取王者荣耀......
  • C# Dictionary(数据字典)的基本用法
    通常情况下,我们可以通过int类型的索引来从数组或者List集合中查询所需的数据但是如果情况稍微复杂一点:索引是非int类型的数据(比如string或其他类型),这时候就需要使......
  • 什么是JSON和XML
    什么是JSON和XMLJSON:JavaScriptObjectNotation【JavaScript对象表示法】.XML:extensiablemarkuplanguage被称作可扩展标记语言JSON和XML都是数据交换语言,完全独......
  • 【code基础】HashMap用法
    1.hashMap赋值的简便方法for(inti=0;i<s.length();i++){charc=s.charAt(i);if(maps.containsKey(c))maps.put(c,maps.g......