JSON.stringify的用法

JSON.stringify 是 JavaScript 中的一个方法,用于将一个 JavaScript 对象或值转换为一个 JSON 字符串。以下是一些使用 JSON.stringify 的基本用法和示例:

基本用法

let obj = {
    
     "name": "John", "age": 30, "city": "New York" };
let myJSON = JSON.stringify(obj);
console.log(myJSON);

上述代码会输出:{"name":"John","age":30,"city":"New York"}

包含样式的字符串

JSON.stringify 可以接受一个可选参数,被称为 “replacer”。这个参数可以是一个函数,用于过滤将要被序列化的对象属性,或者是一个数组,用于指定要序列化的属性。

let obj = {
    
     "name": "John", "age": 30, "city": "New York" };
let myJSON = JSON.stringify(obj, ["name", "city"]);
console.log(myJSON);

上述代码会输出:{"name":"John","city":"New York"},注意只有 “name” 和 “city” 属性被序列化了。

包含函数

如果要将函数或者包含函数的对象序列化为 JSON,需要使用 JSON.stringify 的第三个参数,被称为 “space”(空格)。它将用于在输出中插入空格和换行符,以使其更易于阅读。

let obj = {
    
     "name": "John", "age": 30, "sayHello": function() {
    
     return "Hello"; } };
let myJSON = JSON.stringify(obj, null, 2);
console.log(myJSON);

上述代码会输出:

{
    
    
  "name": "John",
  "age": 30,
  "sayHello": function() {
    
     return "Hello"; }
}

注意,函数并没有被序列化,因为 JSON 是一个数据交换格式,不包括函数或方法。如果你需要将包含函数的对象转换为 JSON,你需要自己创建一个新的对象,将需要序列化的属性复制到新的对象中,并删除函数。

处理循环引用

扫描二维码关注公众号,回复: 16509756 查看本文章

在某些情况下,对象可能会引用自身。在这种情况下,JSON.stringify 会返回 TypeError。要处理这种情况,可以提供一个可选的参数,被称为 “circularReplacer”。这个参数是一个函数,如果对象有循环引用,该函数将被调用。你可以在这个函数中处理循环引用。

let obj = {
    
    };
obj.circular = obj;
let myJSON = JSON.stringify(obj, null, 2);
console.log(myJSON);

默认情况下,上述代码会抛出 TypeError。为了处理这种情况,你可以提供一个 “circularReplacer” 函数:

let obj = {
    
    };
obj.circular = obj;
let myJSON = JSON.stringify(obj, null, 2, function(key, value) {
    
    
  if (this === value) {
    
     return "[self reference]"; }
  return value;
});
console.log(myJSON);

@漏刻有时

猜你喜欢

转载自blog.csdn.net/weixin_41290949/article/details/132690738