将 @JsonView 与 Spring MVC 一起使用
我正在使用以下 bean 定义来使我的 spring 应用程序以 JSON 进行通信,
<bean id="jacksonMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" />
此消息转换器 bean 是否可以使用 @JsonView 注释?
I am using the following bean definition to make my spring app talking in JSON
<bean id="jacksonMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" />
Is it possible with this message converter bean to use the @JsonView annotation?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
@JsonView
在 v1 版本的 Jackson JSON 处理器中已受支持 .4 起。更新 Jackson 1.9.12
新编辑:根据 v1.8.4 文档 我正在使用的函数
writeValueUsingView
现已弃用 使用 ObjectMapper.viewWriter(java.lang.Class) 代替...但是这也已弃用 >从1.9开始,改用writerWithView(Class)! (参见 v1.9.9 文档)所以这里是一个更新的示例,使用 Spring 3.2.0 和 Jackson 1.9.12 进行测试,它仅返回
{id: 1}
而不是扩展的{name: "name"}
因为它使用的是.writerWithView(Views.Public.class)
。切换到Views.ExtendPublic.class
将导致{"id":1,"name":"name"}
上一次编辑: 您需要实例化
ObjectMapper
并使用自定义视图写出对象,如此处,或者在此示例中:定义视图:
使用视图:
如果您使用 Jackson >= 1.7,您可能会发现
@JSONFilter
更适合您的需求。@JsonView
is already supported in the Jackson JSON Processor from v1.4 onwards.New Edit: Updated for Jackson 1.9.12
According to the v1.8.4 documentation the function I was using
writeValueUsingView
is now Deprecated Use ObjectMapper.viewWriter(java.lang.Class) instead… however that has also been Deprecated Since 1.9, use writerWithView(Class) instead! (see v1.9.9 documentation)So here is an updated example, tested with Spring 3.2.0 and Jackson 1.9.12 which simply returns
{id: 1}
and not the extended{name: "name"}
since it is using the.writerWithView(Views.Public.class)
. Switching toViews.ExtendPublic.class
will result in{"id":1,"name":"name"}
Previous Edit: You need to instantiate the
ObjectMapper
and write out the object using a custom view as shown here, or in this example:Define views:
Use views:
If you are using Jackson >= 1.7 you might find that the
@JSONFilter
better suits your needs.Spring 不支持 @JsonView 注解,但这个问题已解决!
遵循此
这是 SPR-7156。
可在Spring 版本 >= 4.1
谢谢 Spring!
@JsonView annotation was not supported on Spring but this issue is solved!
Follow this
This is the SPR-7156.
Available on Spring ver >= 4.1
Thank you Spring!