javascript - 在 json 字符串化数组对象时排除对象属性

标签 javascript json serialization stringify

嘿,我有一个像这样的数组对象

[{
    public: "public",
    private: "private",
    [{
        properties: {...
        },
        instance: {.....
        }
    }, {...
    }, {...
    }]
}, {...
}, {....
}]

这里最外面的数组包含类 A 的对象,它有一些公共(public)属性,一些私有(private)属性,它还包含一个包含类 B 对象的数组,它还包含一些公共(public)和私有(private)字段。

所以基本上这是我的层次结构

array = [A1,A2,A3,A4,....]//object of A

var A = function(){
  var Const = function(){
    this.public_prop;
    this.private_prop;
    this.list = [B1,B2,B3,B4]// objects of B
  }
 //.........
 return Const;
}();

var B = function(){

  var Const = function(){
   this.public_prop;
   this.private_prop;
  }
 //.........
 return Const;
}();

现在,在对它进行字符串化(序列化)时,我只想在序列化字符串中包含公共(public)属性和数组。

例如对于上面的 JSON 表示,我想要这样的东西

[{
        public: "public",
        [{
            properties: {...
            }
        }, {...
        }, {...
        }]
    }, {...
    }, {....
    }]

现在我可以在每个类中创建一个函数getState(),它只会返回需要字符串化的字段,但我似乎无法找到一种方法来本地实现 JSON.stringify在序列化之前调用该方法。有什么方法可以做到这一点吗?

我引用了 Hide certain values in output from JSON.stringify() , 但它只解释了如何在单一层次中排除简单的数字或字符串 Prop ,但如何排除多重层次中的 Prop ?

注意:我所有的类都遵循模块模式

最佳答案

var result = JSON.stringify(myjson, function(key, val) {
    if (key !== "private")
        return val;
});

顶部的对象示例不是有效语法,但要排除名为 "private" 的属性,这应该可行。

关于javascript - 在 json 字符串化数组对象时排除对象属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12465657/

相关文章:

java - junit 测试中的 SerializationException

java - 通过 TCP channel 发送大文件并进行序列化

javascript - 我的 javascript 适用于除 IE8 之外的所有浏览器

json - 使用 double 作为数据类型构造 Json 值

javascript - AngularJs ng-repeat 中所选项目的切换功能

ios - json iOS 解析错误

java - 获取 JSONObject 作为数组,以帮助将其转换为 CSV

c# - Json.NET 反序列化 JObject 的内容?

javascript - 如何在Javascript中循环数组并按3分组?

javascript - PHP 和 cryptoJS IV