我知道 Struts2 JSON Plugin 将整个Action
类转换为 JSON 形式,通过提供一个root
param
我们可以让它只将一个类转换param
为 JSON 形式。
如果我希望我的操作类的 5 个成员中只有 2 或 3 个成员转换为 JSON,该怎么办?这可能吗?
我知道 Struts2 JSON Plugin 将整个Action
类转换为 JSON 形式,通过提供一个root
param
我们可以让它只将一个类转换param
为 JSON 形式。
如果我希望我的操作类的 5 个成员中只有 2 或 3 个成员转换为 JSON,该怎么办?这可能吗?
您可以使用includeProperties
或excludeProperties
。
IncludeProperties
在我的情况下没有按预期工作,因此,我更喜欢使用exludeProperties
。
动作配置看起来像
<action name="camp/ls" class="actions.MyAction">
<result type="json">
<param name="excludeProperties">
dataIsp,deviceBlacklist,deviceOs,deviceWhitelist,exchanges
</param>
</result>
</action>
最简单的方法是从您不想被 JSON 化的属性中删除getter 。
只有具有getter的(非瞬态)属性才会。
在这种情况下,您不应该使用root
参数,而是使用includeProperties
参数。请参阅此链接以获取参考文档。
可以将逗号分隔的正则表达式列表传递给 JSON 结果,以限制将要序列化的属性。只有与这些正则表达式匹配的属性才会包含在 > 序列化输出中。
笔记:
排除属性表达式优先于包含属性表达式。也就是说,如果您对同一结果使用包含和排除属性表达式,则如果排除排除属性表达式首先匹配某个属性,则不会应用包含属性表达式。
<!-- Result fragment --> <result type="json"> <param name="includeProperties"> ^entries\[\d+\]\.clientNumber, ^entries\[\d+\]\.scheduleNumber, ^entries\[\d+\]\.createUserId </param> </result>