【问题标题】:Excluding fields during json serializationjson序列化期间排除字段
【发布时间】:2015-03-15 22:55:45
【问题描述】:

我正在尝试使用 FlexJSON 序列化 java 对象。该对象有一些顶级字段和一个称为结果的集合。在集合中,我只想要一些属性,但它们都被序列化了。这是我正在尝试的代码。

jsons = new JSONSerializer().include("results.ourID","results.name","results.fmtDistance","results.shows.showName","results.knownForNoHTML").exclude("results");

我也尝试过排除结果。*。不走运 - 所有结果字段都已序列化。

【问题讨论】:

    标签: java json flexjson


    【解决方案1】:

    您应该使用.exclude("*"); 而不是.exclude("results");。这将排除除您指定的参数之外的所有其他参数。

    所以在这种情况下,你的行应该是:

    jsons = new JSONSerializer().include("results.ourID","results.name","results.fmtDistance","results.shows.showName","results.knownForNoHTML").exclude("*");

    【讨论】:

      【解决方案2】:

      来自http://flexjson.sourceforge.net/

      在 exludes 中使用点表示法在使用上有细微的差别 与包含相比。如果排除嵌套字段,则意味着 包括父对象的其余部分。所以如果我说 排除(“head.rightEye.retinalScan”)。视网膜扫描成员 rightEye 字段将被排除,但 rightEye 和 head 字段都将 被包括在内。原因是为了排除你的retinalScan字段 必须包括 rightEye 成员。如果你没有,那么它没有 更改任何内容,因为retinalScan 不会包含在 第一名。换句话说,它只是最后一个字段 排除所有其他父字段。

      这表明您应该只对集合使用 Exclude,指出您不想要的内容,然后它会自动包含您想要的内容。

      【讨论】:

      • 我的问题是我有一个非常旧版本的 flexjson,它没有实现文档中的所有内容,当我升级我的代码(带有结果。*)时。
      猜你喜欢
      • 2017-04-16
      • 2019-09-06
      • 1970-01-01
      • 2016-12-29
      • 1970-01-01
      • 2019-03-15
      • 2020-06-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多