java - Zalando RFC7807 为 Jackson Status 选择了错误的序列化器

标签 java spring jackson jhipster

在特定情况下,Jackson 为 Zalando 问题状态选择了错误的序列化器。它选择 EnumSerializer而不是 StatusTypeSerializer它应该。反序列化时,它确实需要正确的(这就是为什么我有下面的异常(exception))

可以使用 this project 重现该问题。只需运行 AccountResourceIntTest.testRegisterInvalidLogin 。它不会在较小的测试用例中发生,但在这个测试用例中可靠地发生。

如果有任何帮助的话,这是错误:

com.fasterxml.jackson.databind.JsonMappingException: Current token (VALUE_STRING) not numeric, can not use numeric value accessors at [Source: [B@2aa85cc4; line: 1, column: 10181] at [Source: [B@2aa85cc4; line: 1, column: 10180] (through reference chain: org.zalando.problem.DefaultProblem["status"]) Motivation for or Use Case

我不知道 Jackson 选择正确的序列化器的逻辑。但我知道使用了错误的序列化器。我的所有测试都没有发生这种情况。但是,每个约束验证错误都会失败。

有什么想法吗?

最佳答案

您没有将httpMessageConverters设置为restUserMockMvc

添加这个解决了我的问题:

.setMessageConverters(httpMessageConverters)

关于java - Zalando RFC7807 为 Jackson Status 选择了错误的序列化器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46428757/

相关文章:

java - 在实现类中将接口(interface)的返回值限制在一个范围内

java - 带有 HTML 内嵌图像的 JLabel

java - HashMap replace 和 put 的区别

java - 不使用 ResponseEntity 时 Spring Controller 不返回值

java - Spring junit NoSuchMethodException

java - Jackson ObjectMapper 在 try catch 中无法访问

java - 使用 Jackson 序列化/反序列化不同类型的 map

java - Eclipse 在注释下面添加导入

java - 有没有办法验证 Spring Controller 上的方法是使用 Mockito 调用的

java - Jackson 无法反序列化通过 REST 传递的 MongoDB 对象