Javascript& Json:从序列化和反序列化中排除字段

时间:2014-10-31 23:05:45

标签: java javascript json gson

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

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

1 个答案:

答案 0 :(得分:1)

JSON.stringify()函数采用可选的第二个参数,称为" replacer"。它可以是函数或数组,它指导序列化过程,以确定如何将值包含在正在构造的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 }

" notMe" " b"的属性对象将被排除在外。