【问题标题】:Javascript & Json: Excluding Fields From Serialization and DeserializationJavascript & Json:从序列化和反序列化中排除字段
【发布时间】:2014-10-31 23:05:45
【问题描述】:

我在 Java 中使用 Gson 包从 Java 类读取/写入 Json。 Gson 的主要功能之一是能够与 User Defined Strategies 一起工作,它可以通过编程方式定义要包含/排除的字段。

这在服务器端很有效,但是对于 Javascript/客户端有类似的东西吗?

【问题讨论】:

    标签: java javascript json gson


    【解决方案1】:

    JSON.stringify() 函数采用称为“替换器”的可选第二个参数。它可以是一个函数或一个数组,它指导序列化过程如何将值包含在正在构造的 JSON 字符串中。

    如果参数是一个函数,它会传递两个参数,一个key(属性名称)和一个value。如果键是被字符串化的“外部”对象的一部分,则this 值被安排为undefined,或者如果顶级对象下方的结构的一部分,则为对子对象的引用。如果键/值不应该包含在结果中,该函数可以返回undefined

    如果该值是一个数组,它规定了顶级对象的哪些属性要包含在结果中。

    因此:

    var obj = {
      a: 1,
      b: {
        c: 2,
        notMe: "super secret"
      },
      d: 3
    };
    
    var str = JSON.stringify(obj, function replacer(key, value) {
      if (this && key === "notMe" && this.c === 2)
        return undefined;
      return value;
    });
    

    将产生包含字符串的“str”

    { "a": 1, "b": { "c": 2 }, "d": 3 }
    

    “b”对象的“notMe”属性将被排除。

    【讨论】:

      猜你喜欢
      • 2014-12-13
      • 1970-01-01
      • 2020-06-29
      • 2020-10-23
      • 1970-01-01
      • 2013-07-09
      • 2011-05-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多