加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

java – Spring REST | MappingJacksonHttpMessageConverter生

发布时间:2020-12-15 01:40:17 所属栏目:大数据 来源:网络整理
导读:我用Spring实现了一个RESTful Web服务.该服务基于Accept标头以XML或JSON响应.这是context.xml映射: 这是我的控制器方法: @Controller@RequestMapping(value = "/entityService")class RestfulEntityService { @Resource private EntityService entityServi

我用Spring实现了一个RESTful Web服务.该服务基于Accept标头以XML或JSON响应.这是context.xml映射:

  

这是我的控制器方法:

@Controller
@RequestMapping(value = "/entityService")
class RestfulEntityService {

  @Resource
  private EntityService entityService;

  @ResponseBody
  @RequestMapping(value = "/getAllEntities",method = RequestMethod.GET)
  public List

XML响应是有效的,但是,当客户端将Accept标头设置为application / json时,响应是无效的JSON.

这是JSON响应示例:

[{"id":3,"attributes":[{"id":18,"attributeValue":null,"attributeName":"mobile","attributeType":"varchar(40)","entity":{"id":3,"attributes": ..... repeats for a while and then stops..
最佳答案
您使用XStream序列化XML响应,使用Jackson JSON序列化JSON响应.查看您发布的JSON输出,似乎有一个循环引用问题.我猜测实体有一个属性列表,每个属性都指向它们各自的实体. XStream通过使用XPath透明地处理循环引用,这允许在反序列化返回到对象时保留引用.从v1.6开始,Jackson能够处理循环引用,但是你需要通过@JsonManagedReference和@JsonBackReference来注释你的序列化实体来帮助它.我认为杰克逊在允许JSON序列化中的返回引用方面是独一无二的.

请参阅handling bi-directional references using declarative methods的杰克逊文档以供参考.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读