我正在尝试使用FlexJSON来序列化Java对象。 该对象具有一些顶级字段和一个名为 results 的集合。 在集合中,我只需要几个属性,但所有这些属性都在序列化。 这是我正在尝试的代码。
jsons = new JSONSerializer().include("results.ourID","results.name","results.fmtDistance","results.shows.showName","results.knownForNoHTML").exclude("results");
我也尝试过结果。 没有运气 - 所有结果字段都被序列化。
而不是.exclude("results");
你应该使用.exclude("*");
。 这将排除除您指定的参数之外的所有其他参数。
所以在这种情况下,你的行应该是:
jsons = new JSONSerializer().include("results.ourID","results.name","results.fmtDistance","results.shows.showName","results.knownForNoHTML").exclude("*");
来自 http://flexjson.sourceforge.net/
使用带有 exludes 的点表示法在使用上有一个微妙的差异 与包含相比。如果排除嵌套字段,则意味着 包括父对象的其余部分。所以如果我说 exclude("head.rightEye.retinalScan").视网膜扫描成员 右眼场将被排除,但右眼和头部场都将 被包括在内。原因是为了排除视网膜扫描字段你 必须包括右眼成员。如果你没有,那么它就不会 更改任何内容,因为视网膜扫描不会包含在 第一名。换句话说,它只是最后一个字段 排除 包括所有其他父字段。
这表明您应该只对集合使用 Exclusion,指示您不想要的内容,然后它将自动包含您想要的内容。