Zalando RFC7807错误的序列化器选择状态与杰克逊

时间:2017-09-26 14:11:08

标签: java spring jackson jhipster

在特定情况下,杰克逊为Zalando问题状态选择了错误的序列化程序。它会选择EnumSerializer而不是StatusTypeSerializer。反序列化时,它确实采用了正确的(这就是为什么我有下面的例外)

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

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

  

com.fasterxml.jackson.databind.JsonMappingException:当前令牌   (VALUE_STRING)不是数字,不能使用数值访问器   [来源:[B @ 2aa85cc4; line:1,专栏:10181]在[来源:   [B @ 2aa85cc4; line:1,column:10180](通过参考链:   org.zalando.problem.DefaultProblem [“status”])动机或使用   情况下

我不知道杰克逊选择合适的序列化器的逻辑。但我知道使用了错误的序列化程序。在我的所有测试中都不会发生这种情况。但是,每个约束验证错误都会失败。

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

您没有将 httpMessageConverters 设置为 restUserMockMvc

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

.setMessageConverters(httpMessageConverters)