我有一个Spring MVC应用程序,它根据每个客户端调用的请求返回Json和Xml。我使用Jackson和Xstream让Spring将我的java对象反序列化为json或xml输出。
我的java对象包含一堆属性,至少30个。我想知道是否有一种方法可以让Spring控制我的java对象的哪些字段将基于标题或jml存在于json或xml中参数属性。因此,客户端应用程序将能够识别自身,后端将仅返回必要的字段或"可见"对于该特定客户端应用程序当然,我可以采用令人讨厌的硬编码方法,但我不愿意这样做,因为客户端应用程序的数量可以增加或减少,并且在代码更改发生的任何时候进行部署都是脱离了上下文。
有没有办法指示spring / jackson / xstream根据一些提供的值来控制输出?
我做了一个快速实现,我当前的解决方案是这样的:我有一个带有客户端ID列表的xml(我使用这些ID来识别我的客户端应用程序),对于每个ID,我有一个属性列表,客户端app需要来自java对象。我创建了一个拦截器,在控制器和视图之间,我的拦截器获取带有客户端ID的头信息,获取属性列表并使用BeanWrapper(http://docs.spring.io/spring/docs/2.0.x/reference/validation.html)创建一个只包含所需属性的新对象。有数据的客户端,所有其他的都保持为null(我指示Jackson和Xtream)忽略null属性。这种方法工作正常,但我想知道是否有另一种/更好的方法来做到这一点。
谢谢 TL