2

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

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

我也试过 results.* 在排除。不走运——所有的结果字段都被序列化了。

4

2 回答 2

2

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

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

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

于 2015-05-12T08:26:44.200 回答
0

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

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

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

于 2015-03-15T23:19:05.153 回答