在json序列化期间排除字段

时间:2015-03-15 22:55:45

标签: java json flexjson

我尝试使用FlexJSON来序列化java对象。该对象具有一些顶级字段和一个名为results的集合。从集合中我只想要一些属性,但所有属性都被序列化。这是我尝试的代码。

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

我也在排除中尝试了结果。*没有运气 - 所有结果字段都是序列化的。

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:0)

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

  

将点符号与exlude一起使用会产生微妙的差异   与包括时相比。如果排除它隐含的嵌套字段   包含父对象的其余部分。所以,如果我说   排除(" head.rightEye.retinalScan&#34)。视网膜扫描成员   rightEye字段将被排除,但rightEye和head字段都将被排除   包括在内。原因是为了排除retinalScan字段   必须包括rightEye成员。如果你没有,那么它就没有了   改变任何东西,因为retinalScan不会被包括在内   第一名。换句话说,它只是最后一个字段   排除所有其他父字段。

这表明你应该只为收集品使用排除,表明你不想要的东西,然后它会自动包含你想要的东西。