GVKun编程网logo

JSON.stringify 函数 (JavaScript)的声明和使用(json.stringify function)

17

在本文中,我们将带你了解JSON.stringify函数(JavaScript)的声明和使用在这篇文章中,我们将为您详细介绍JSON.stringify函数(JavaScript)的声明和使用的方方面

在本文中,我们将带你了解JSON.stringify 函数 (JavaScript)的声明和使用在这篇文章中,我们将为您详细介绍JSON.stringify 函数 (JavaScript)的声明和使用的方方面面,并解答json.stringify function常见的疑惑,同时我们还将给您一些技巧,以帮助您实现更有效的37.JavaScript对象与JSON格式的转换,JSON.stringify、JSON.parse方法的使用方法和注意事项、JavaScript -- JSON.parse 函数 和 JSON.stringify 函数、JavaScript JSON.stringify 有趣的部分、JavaScript JSON.stringify()的使用总结

本文目录一览:

JSON.stringify 函数 (JavaScript)的声明和使用(json.stringify function)

JSON.stringify 函数 (JavaScript)的声明和使用(json.stringify function)

原文地址:http://technet.microsoft.com/zh-cn/sysinternals/cc836459(v=vs.94)

JSON.stringify 函数
JavaScript
JSON.stringify 函数 (JavaScript)

将 JavaScript 值转换为 JavaScript 对象表示法 (Json) 字符串。

JSON.stringify(value [,replacer] [,space])
参数
value
必需。 要转换的 JavaScript 值(通常为对象或数组)。

replacer
可选。 转换结果的函数或数组。

如果 replacer 为一个函数,则 JSON.stringify 会调用该函数,并传入每个成员的键和值。使用返回值而不是原始值。 如果此函数返回 undefined,则排除成员。根对象的键是一个空字符串:""。

如果 replacer 为一个数组,则仅转换该数组中具有键值的成员。 成员的转换顺序与键在数组中的顺序一样。 当 value 参数也为数组时,将忽略 replacer 数组。

space
可选。 向返回值 JSON 文本添加缩进、空白和换行符以使其更易于读取。

如果省略 space,则将生成返回值文本,而没有任何额外空白。

如果 space 为一个数字,则返回值文本在每个级别缩进指定数目的空格。 如果 space 大于 10,则文本缩进 10 个空格。

如果 space 是非空字符串(例如“\t”),则返回值文本在每个级别中缩进字符串中的字符数。

如果 space 是长度大于 10 个字符的字符串,则使用前 10 个字符。

返回值
一个包含 JSON 文本的字符串。

异常
异常
条件

替换器参数无效
replacer 参数不是函数或数组。

值参数中不支持循环引用
value 参数包含循环引用。

备注
如果 value 具有 toJSON 方法,则 JSON.stringify 函数使用该方法的返回值。 如果 toJSON 方法的返回值为 undefined,则不转换成员。 这使对象能够确定其自己的 JSON 表示形式。

将不会转换不具有 JSON 表示形式的值,例如 undefined。 在对象中,将丢弃这些值。 在数组中,会将这些值替换为 null。

字符串值以引号开始和结束。 所有 Unicode 字符可括在引号中,除了必须使用反斜杠进行转义的字符。以下字符的前面必须是反斜杠:


反斜杠 (\)

Backspace (b)

换页 (f)

换行符 (n)

回车 (r)

水平制表符 (t)

四个十六进制数字 (执行顺序

在序列化过程中,如果 value 参数具有 toJSON 方法,则 JSON.stringify 会首先调用 toJSON 方法。 如果该方法不存在,则使用原始值。 紧接着,如果提供 replacer 参数,则该值(原始值或 toJSON 返回值)将替换为 replacer 参数的返回值。 最后,根据可选的 space 参数向该值添加空白以生成最终的 JSON 文本。

示例
此示例使用 JSON.stringify 将
contact
对象转换为 JSON 文本。 定义
memberfilter
数组以便只转换
surname

phone
成员。 省略
firstname
成员。


var contact = new Object();
contact.firstname = "Jesper";
contact.surname = "Aaberg";
contact.phone = ["555-0100","555-0120"];

var memberfilter = new Array();
memberfilter[0] = "surname";
memberfilter[1] = "phone";
var jsonText = JSON.stringify(contact,memberfilter,"\t");
document.write(jsonText);
// Output:
// { "surname": "Aaberg","phone": [ "555-0100","555-0120" ] }
此示例使用带数组的 JSON.stringify。
replacetoupper
函数将数组中的每个字符串转换为大写形式。


var continents = new Array();
continents[0] = "Europe";
continents[1] = "Asia";
continents[2] = "Australia";
continents[3] = "Antarctica";
continents[4] = "north America";
continents[5] = "South America";
continents[6] = "Africa";

var jsonText = JSON.stringify(continents,replacetoupper);

function replacetoupper(key,value) {
return value.toString().toupperCase();
}

//Output:
// "EUROPE,ASIA,AUSTRALIA,ANTARCTICA,norTH AMERICA,SOUTH AMERICA,AFRICA"
此示例使用 toJSON 方法将字符串值转换为大写形式。

var contact = new Object(); contact.firstname = "Jesper"; contact.surname = "Aaberg"; contact.phone = ["555-0100","555-0120"]; contact.toJSON = function(key) { var replacement = new Object(); for (var val in this) { if (typeof (this[val]) === 'string') replacement[val] = this[val].toupperCase(); else replacement[val] = this[val] } return replacement; }; var jsonText = JSON.stringify(contact); document.write(jsonText); // Output: {"firstname":"JESPER","surname":"AABERG","phone":["555-0100","555-0120"]} '{"firstname":"JESPER","555-0120"]}' */

37.JavaScript对象与JSON格式的转换,JSON.stringify、JSON.parse方法的使用方法和注意事项

37.JavaScript对象与JSON格式的转换,JSON.stringify、JSON.parse方法的使用方法和注意事项

在这里插入图片描述

在这里插入图片描述


文章目录

  • JSON处理
    • JSON.stringify
    • stringify的限制
    • 排除和替换
    • 映射函数
    • 格式化使用的空格数量
    • 自定义toJSON方法
    • JSON.parse
    • 使用reviver
    • 总结


JSON处理

JSONJavaScript Object Notation)是JavaScript表达值和对象的通用数据格式,其本质就是符合一定规范的字符串。由于JSON的优良特性,非常容易和其他语言进行数据交换,尤其在前后端交互方面。即使我们前端使用JavaScript,后端使用Java/PHP/Python同样可以使用JSON格式的数据轻松交换。

JSON.stringify

JavaScript为我们提供了简单的方法可以实现对象和字符串之间的转化。

  1. JSON.stringify将对象转为JSON字符串;
  2. JSON.parseJSON字符串转为对象;

例如,我们把一个对象Dog使用 JSON.string转为JSON字符串:

let Dog = {
    name:'Peter',
    age:187,
    gender:'male',
    hands:['hand01','hand02','hand03','hand04'],
    childs:[
        {
            name:'little peter01',
            age:2,
            gender:'male',
            hands:['hand01',
            childs:[]
        },
        {
            name:'little peter02',
            age:3,
            childs:[]
        }
    ]
}
let dogJson = JSON.stringify(Dog)
console.log(typeof dogJson)
console.log(dogJson)

代码的执行效果:

image-20220625085853769

可见,使用JSON.stringify(obj)方法会返回该对象objJSON字符串数据,这个转换的过程可以称作JSON编码(JSON-encoded)序列化(serialized),亦或者编组化(marshalled)。当对象转为普通的字符串后,我们就可以以普通数据的格式存储、传递这些数据。

如果我们把这些字符串写入数据库,就相当于把JavaScript对象存进了数据库。

注意:

  1. JSON编码的对象统一使用双引号,没有单引号和反引号;
  2. 对象的属性名也用双引号,这是强制的;

JSON已经发展成为了独立的数据规范,因此归属于JavaScript语言本身的非数据属性会被JSON.stringify跳过。

包括:

  1. 对象方法;
  2. Symbol类型
  3. undefined的属性
let user = {
    sayHello(){//函数被忽略
        console.log('hello world');
    },
    [Symbol('id')]:996996,//Symbol被忽略
    val:undefined//undefined值被忽略
}
console.log(JSON.stringify(user))

代码执行效果:

image-20220625091858066

可以看到,里面啥也没有。

stringify的限制

并非所有的对象都能转为JSON格式,如果对象之间存在循环引用,就会导致转换失败。

let father = {}
let son = {}
father.son = son
son.father = father
JSON.stringify(father)

代码执行结果:

image-20220625093101180

这里出现错误的原因就是存在对象间的循环引用,Father引用了Son,而Son又反过来引用了Father

image-20220625093812718

排除和替换

如果我们只希望将对象的个别属性转为JSON格式,或者摆出循环应用中的属性,应该怎么做呢?

JSON.stringify已经为我们提供了解决方法:

let  json = JSON.stringify(obj[,replacer,space])

参数解读:

  1. obj:要编码的对象
  2. replacer:要编码的属性数组或者映射函数function(k,v)
  3. space:用于格式化的空格数量

举个例子:

let father = {
    name:'father',
    age:28
}
let son = {
    name:'son',
    age:4
}
father.son = son;
son.father = father;
console.log(JSON.stringify(father,['name','age']))

代码的执行结果如下:

image-20220626073911366

如果我们在第二个参数传入一个数组,那么JSON.stringify就会只把数组中的名称转为JSON格式,这样计算对象存在循环引用,同样能够成功的转格式。

如果我们希望序列化出循环应用外的所有对象属性,只需要把对象的所有属性名写入数组即可,这对对象的子对象同样生效。

举个例子:

let father = {
    name:'father',
    age:28,
    car:{
        car_name : "BYD",
        car_age:3,
    }
}
console.log(JSON.stringify(father,'car','car_name']))

代码执行结果:

image-20220626075006841

但是,还存在一个问题,如果对象属性特别多,可能数组就会非常长,代码也会很冗长。

这种情况下就需要使用映射函数

映射函数

我们可以创建一个函数,代替数组作为replacer,这个函数接收(key,value)作为参数,并决定如何序列化对应的属性。

例如,在解决循环引用的时候,我们排除引用属性:

let father = {
    name:'father',
    car:{
    	car_name : "BYD",
	}
}
let son = {
    name:'son',function replacer(key,value){
    console.log(`${key}:${value}`)
	return (key=='son')?undefined:value;
}))

代码执行结果如下:

image-20220626080556355

由于值为undefined的属性会被JSON.stringify忽略,这样我们就可以轻松的排除所有不希望出现的属性了。

格式化使用的空格数量

JSON.stringify(value,replacer,spaces)的第三个参数spaces可以指定JSON字符串的缩进空格数,常用的数值有2、4两种,相信童鞋们已经在编辑代码的时候有过修改缩进tab空格数的经历了。

在上文案例中,我们没有指定缩进空格数量,所以格式化后的JSON字符串都是没有格式的。

举个例子:

let Dog = {
    name:'Peter',
            childs:[]
        }
    ]
}
let dogJson = JSON.stringify(Dog,null,2)
console.log(dogJson)

代码的执行结果:

image-20220626081855385

对比本文的第一个案例,是不是这样的缩进看起来好看多了呢?

自定义toJSON方法

在之前的文章中,我们讲到每个对象都有的toString方法,当进行格式转换时会自动调用。和toString一样,对象的toJSON方法会在序列化的时候调用,我们可以通过重写这个方法改变序列化的方式。

例如:

let dog = {
    name : 'peter',
    age:18
}
console.log(JSON.stringify(dog))
dog.toJSON = function(){
    return this.age;
}
console.log(JSON.stringify(dog))

代码执行结果:

image-20220626083258015

我们可以看到,在重写了对象的toJSON方法后,使用stringify的结果发生了改变。

我们可以根据自己的需要重写toJSON方法,从而达到自己的目的。

JSON.parse

上文讲到了如何使用JSON.stringify把对象转为JSON格式的字符串,这里就详细介绍如何把JSON字符串转为对象。

语法:

let obj = JSON.parse(str,[reviver])
  1. str 要解析的 JSON 字符串。

  2. reviver 可选的函数 function(key,value),该函数将为每个 (key,value) 对调用,并可以对值进行转换。

例如:

let str_arr = '[1,2,3]'//数组字符串
let arr = JSON.parse(str_arr)
console.log(typeof arr)

代码执行结果:

image-20220626083821776

对于复杂的嵌套对象:

let str_obj = `{
  "name": "Peter","age": 187,"gender": "male","hands": [
    "hand01","hand02","hand03","hand04"
  ],"childs": [
    {
      "name": "little peter01","age": 2,"hands": [
        "hand01","hand04"
      ],"childs": []
    },{
      "name": "little peter02","age": 3,"childs": []
    }
  ]
}`
let obj = JSON.parse(str_obj)
console.log(obj.name)

代码执行结果:

image-20220626084015190

注意:JSON不支持注释,在JSON中添加注释时错误的行为

有一种名为JSON5的格式,可以有不加引号的键、允许注释,但是这是独立的库,补上官方标准。

常规的JSON格式严格,这样是为了保证数据的可靠、快速解析算法

使用reviver

既然JSON.parse能够直接转字符串为对象,为啥还要再搞reviver呢?

场景举例:

如果我们有一个对象字符串如下:

// title: (meetup title),date: (meetup date)
let str = '{"title":"Conference","date":"2017-11-30T12:00:00.000Z"}';

现在我们要将它转为对象,存在什么问题呢?

let str = '{"title":"Conference","date":"2017-11-30T12:00:00.000Z"}';
let obj = JSON.parse(str)
obj.date.getDate();//Error

代码执行结果如下:

image-20220626084559522

造成这种结果的原因是date属性被转为了字符串,而不是Date对象。

这个时候就需要我们使用reviver函数将date转为Date对象:

let str = '{"title":"Conference","date":"2017-11-30T12:00:00.000Z"}';
let obj = JSON.parse(str,function(key,value){
    if(key=='date')return new Date(value)
    return value
})
obj.date.getDate();

代码执行效果:

image-20220626090850247

顺便说一下,这也适用于嵌套对象:

let schedule = `{
  "meetups": [
    {"title":"Conference","date":"2017-11-30T12:00:00.000Z"},{"title":"Birthday","date":"2017-04-18T12:00:00.000Z"}
  ]
}`;

schedule = JSON.parse(schedule, function(key, value) {
  if (key == 'date') return new Date(value);
  return value;
});

alert( schedule.meetups[1].date.getDate() ); // 正常运行了!

总结

  1. JSON是一种数据格式,有独立的标准和大多数编程语言的支持
  2. JSON支持Object、array、string、number、boolean和null
  3. JSON.stringify
  4. JSON.parse

JavaScript -- JSON.parse 函数 和 JSON.stringify 函数

JavaScript -- JSON.parse 函数 和 JSON.stringify 函数

JavaScript -- JSON.parse 函数 和 JSON.stringify 函数

函数: 字符串转换成对象。

<Meta charset=> Document

 运行结果:

bed8f52.png" alt="">

2. JSON.stringify 函数:  可

<Meta charset=> Document

运行结果:

JavaScript JSON.stringify 有趣的部分

JavaScript JSON.stringify 有趣的部分

参考语法

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

一般在使用JSON.stringify常见有三种情形

  • 仅仅转换成字符串

    var arr = [{"name":"张三", "age":99, "address":"武汉犄角旮旯里", fun:function(){console.log("我就是一个注释")}}]
    var jsonstr = JSON.stringify(arr);
    console.log(jsonstr);

    image.png

这种简单方便,但是一点都不好看,所以我们可以继续改进下

  • 添加字符

    var arr = [{"name":"张三", "age":99, "address":"武汉犄角旮旯里", fun:function(){console.log("我就是一个注释")}}]
    var jsonstr = JSON.stringify(arr, null," ");
    console.log(jsonstr);

    image.png

其实很简单,就是在第三个参数里添加了一个空格,当然你也可以添加\n or \t这样的特殊字符

  • 过滤数据,修改replacer参数

    var arr = [{"name":"张三", "age":99, "address":"武汉犄角旮旯里", fun:function(){console.log("我就是一个注释")}}]
    
    var jsonstr = JSON.stringify(arr, ["age"]," ");
    console.log(jsonstr);

    image.png

其实还可以解决一个问题,JSON.stringify在转换字符串的时候默认是不会转换function
所以可以传递第二个参数修改下。其实想过滤数据也是可以在replacer方法里实现,当你返回的是对象或数组,都会被序列化。所以可以判断value的类型是否返回就ok了

    function replacer(key, value) {

       if(typeof value ==="function"){
            return String(value);
        }
        return value;
      }

var arr = [{"name":"张三", "age":99, "address":"武汉犄角旮旯里", fun:function(){console.log("我就是一个注释")}}]

var jsonstr = JSON.stringify(arr, replacer," ");
console.log(jsonstr);

image.png

JavaScript JSON.stringify()的使用总结

JavaScript JSON.stringify()的使用总结

一、使用方法

1、基本用法

JSON.stringify()可以把一个JavaScript对象序列化为一个JSON字符串。

let json1 = {
  title: "Json.stringify",
  author: [
    "浪里行舟"
  ],
  year: 2021
};
let jsonText = JSON.stringify(json1);

默认情况下,JSON.stringify()会输出不包含空格或缩进的JSON字符串,因此jsonText的值是这样的:

"{"title":"Json.stringify","author":["浪里行舟"],"year":2021}"

在序列化JavaScript对象时,所有函数和原型成员都会有意地在结果中省略。此外,值为undefined的任何属性也会被跳过。最终得到的就是所有实例属性均为有效JSON数据类型的表示。

在JSON.stringify()方法一共能接受3个参数,其中两个可选的参数(分别是第二、第三个参数)。这两个可选参数可以用于指定其他序列化JavaScript对象的方式。第二个参数是过滤器,可以是数组或函数;第三个参数是用于缩进结果JSON字符串的选项。单独或组合使用这些参数可以更好地控制JSON序列化。

2、第二个参数--过滤器

如果第二个参数是一个数组,那么JSON.stringify()返回的结果只会包含该数组中列出的对象属性。比如下面的例子:

let json1 = {
  title: "Json.stringify",
  author: [
    "浪里行舟"
  ],
  year: 2021,
  like: ''frontend'',
  weixin: ''frontJS''
};
let jsonText = JSON.stringify(json1, [''weixin'']);

在这个例子中,JSON.stringify()方法的第二个参数是一个包含一个字符串的数组:"weixin"。它对应着要序列化的对象中的属性,因此结果JSON字符串中只会包含这个属性:

"{"weixin":"frontJS"}"

如果第二个参数是一个函数,则行为又有不同。提供的函数接收两个参数:属性名(key)和属性值(value)。可以根据这个key决定要对相应属性执行什么操作。这个key始终是字符串,只是在值不属于某个键/值对时会是空字符串。

const students = [
  {
    name: ''james'',
    score: 100,
  }, {
    name: ''jordon'',
    score: 60,
  }, {
    name: ''kobe'',
    score: 90,
  }
];

function replacer (key, value) {
  if (key === ''score'') {
    if (value === 100) {
      return ''S'';
    } else if (value >= 90) {
      return ''A'';
    } else if (value >= 70) {
      return ''B'';
    } else if (value >= 50) {
      return ''C'';
    } else {
      return ''E'';
    }
  }
  return value;
}
console.log(JSON.stringify(students, replacer, 4))

上面的代码,我们通过replacer将成绩从百分制替换为成绩等级。

值得注意的是,如果stringify的第二个参数为函数那么它的返回值如果是undefined,那么对应的属性不会被序列化,如果返回其他的值,那么用返回的值替代原来的值进行序列化。

3、第三个参数--字符串缩进

JSON.stringify()方法的第三个参数控制缩进和空格。在这个参数是数值时,表示每一级缩进的空格数。例如,每级缩进4个空格,可以这样:

let json1 = {
  title: "Json.stringify",
  author: [
    "浪里行舟"
  ],
  year: 2021
};
let jsonText = JSON.stringify(json1, null, 4);

这样得到的jsonText格式如下:

{
    "title": "Json.stringify",
    "author": [
        "浪里行舟"
    ],
    "year": 2021
}

JSON.stringify()在处理数据的时候同时考虑了数据转换和方便阅读,只不过,方便阅读这一点,常常被人忽略。

4、toJSON()方法--自定义JSON序列化

有时候,对象需要在JSON.stringify()之上自定义JSON序列化。此时,可以在要序列化的对象中添加toJSON()方法,序列化时会基于这个方法返回适当的JSON表示。

下面的对象为自定义序列化而添加了一个toJSON()方法:

let json1 = {
  title: "Json.stringify",
  author: [
    "浪里行舟"
  ],
  year: 2021,
  like: ''frontend'',
  weixin: ''frontJS'',
  toJSON: function () {
    return this.author
  }
};
console.log(JSON.stringify(json1)); // ["浪里行舟"]

注意,箭头函数不能用来定义toJSON()方法。主要原因是箭头函数的词法作用域是全局作用域,在这种情况下不合适。

二、使用场景

1、判断数组是否包含某对象,或者判断对象是否相等。

//判断数组是否包含某对象
let data = [
    {name:''浪里行舟''},
    {name:''前端工匠''},
    {name:''前端开发''},
    ],
    val = {name:''浪里行舟''};
console.log(JSON.stringify(data).indexOf(JSON.stringify(val)) !== -1);//true

我们还可以使用JSON.stringify()方法,来判断两个对象是否相等。

// 判断对象是否相等
let obj1 = {
    a: 1,
    b: 2
  }
  let obj2 = {
    a: 1,
    b: 2,
  }
console.log(JSON.stringify(obj1) === JSON.stringify(obj2)) // true

不过这种方式存在着较大的局限性,对象如果调整了键的顺序,就会判断出错!

// 调整对象键的位置后
let obj1 = {
    a: 1,
    b: 2
  }
  let obj2 = {
    b: 2,
    a: 1,
  }
console.log(JSON.stringify(obj1) === JSON.stringify(obj2)) // false

2、使用localStorage/sessionStorage时

localStorage/sessionStorage默认只能存储字符串,而实际开发中,我们往往需要存储对象类型,那么此时我们需要在存储时利用json.stringify()将对象转为字符串,在取本地缓存时,使用json.parse()转回对象即可。

// 存数据
function setLocalStorage(key,val) {
    window.localStorage.setItem(key, JSON.stringify(val));
};
// 取数据
function getLocalStorage(key) {
    let val = JSON.parse(window.localStorage.getItem(key));
    return val;
};
// 测试
setLocalStorage(''Test'',[''前端工匠'',''浪里行舟'']);
console.log(getLocalStorage(''Test''));

3、实现对象深拷贝

开发中,有时候怕影响原数据,我们常深拷贝出一份数据做任意操作,使用JSON.stringify()与JSON.parse()来实现深拷贝是很不错的选择。

let arr1 = [1, 3, {
    username: '' kobe''
}];
let arr2 = JSON.parse(JSON.stringify(arr1));
arr2[2].username = ''duncan''; 
console.log(arr1, arr2)

这是利用JSON.stringify将对象转成JSON字符串,再用JSON.parse把字符串解析成对象,一去一来,新的对象产生了,新对象会开辟新的栈,实现深拷贝。

这种方法虽然可以实现数组或对象深拷贝,但不能处理函数和正则,因为这两者基于JSON.stringify和JSON.parse处理后,得到的正则就不再是正则(变为空对象),得到的函数就不再是函数(变为null)了。

let arr1 = [1, 3, function () { }, {
  username: '' kobe''
}];
let arr2 = JSON.parse(JSON.stringify(arr1));
arr2[3].username = ''duncan'';
console.log(arr1, arr2)

三、使用注意事项

JSON.stringify()虽然功能很强大,但是有些属性无法被stringify,所以在开发中需注意以下几种情况,以免产生一些始料未及的BUG。

1、被转换值中有 NaN 和 Infinity

let myObj = {
  name: "浪里行舟",
  age: Infinity,
  money: NaN,
};
console.log(JSON.stringify(myObj));
// {"name":"浪里行舟","age":null,"money":null}

JSON.stringify([NaN, Infinity])
// [null,null]

2、被转换值中有 undefined、任意的函数以及 symbol 值

分为两种情况:

  • 数组,undefined、任意的函数以及symbol值在序列化的过程中会被转换成 null
JSON.stringify([undefined, function () { }, Symbol("")]);
// ''[null,null,null]''
  • 非数组,undefined、任意的函数以及symbol值在序列化的过程中会被忽略
JSON.stringify({ x: undefined, y: function () { }, z: Symbol("") });
// ''{}''

3、循环引用

如果一个对象的属性值通过某种间接的方式指向该对象本身,那么就是一个循环引用。比如:

let bar = {
  a: {
    c: foo
  }
};
let foo = {
  b: bar
};

JSON.stringify(foo)

这种情况下,序列化会报错的:

// 错误信息
Uncaught ReferenceError: foo is not defined
    at <anonymous>:3:8

4、含有不可枚举的属性值时

不可枚举的属性默认会被忽略:

let personObj = Object.create(null, {
  name: { value: "浪里行舟", enumerable: false },
  year: { value: "2021", enumerable: true },
})

console.log(JSON.stringify(personObj)) // {"year":"2021"}

四、总结

JSON.stringify()用于将JavaScript对象序列化为JSON字符串,这方法有一些选项可以用来改变默认的行为,以实现过滤或修改流程。不过也应该注意有些属性是无法被 stringify,所以开发时候应该避开这些坑!

以上就是JavaScript JSON.stringify()的使用总结的详细内容,更多关于JavaScript JSON.stringify()的使用的资料请关注其它相关文章!

您可能感兴趣的文章:
  • 详解JavaScript对象序列化
  • JavaScript对象与JSON格式的转换及JSON.stringify和JSON.parse的使用方法
  • JS中的Error对象及使用JSON.stringify()序列化Error问题

关于JSON.stringify 函数 (JavaScript)的声明和使用json.stringify function的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于37.JavaScript对象与JSON格式的转换,JSON.stringify、JSON.parse方法的使用方法和注意事项、JavaScript -- JSON.parse 函数 和 JSON.stringify 函数、JavaScript JSON.stringify 有趣的部分、JavaScript JSON.stringify()的使用总结等相关内容,可以在本站寻找。

本文标签:

上一篇简单测试Newtonsoft.json JObject内存占用分配(newtonsoft.json 内存溢出)

下一篇新站排名不稳定的Google幽灵现象(谷歌发现幽灵建筑)