【发布时间】:2017-05-20 05:15:08
【问题描述】:
我有一个接收和返回 JSON 内容的 HTTP 端点。
在测试边缘情况时,我发现端点在提交带有意外 JSON 对象的请求时会返回错误的详细内容。
详细来说,我期望的是一个字符串,而是提交一个对象,例如:
我希望:
{
"myKey" : "someValue"
}
当我提交时:
{
"myKey" : {}
}
提交错误内容时,我希望端点返回的是:
- 状态代码为 400 且内容为空的 HTTP 响应。
然而,我收到的是:
-
带有状态码 400 和以下内容的 HTTP 响应:
Can not deserialize instance of java.lang.String out of START_OBJECT token at [Source: org.apache.catalina.connector.CoyoteInputStream@5bcfg1cc; line: 1, column: 11] (through reference chain: com.example.MyRequest["myKey"])
我正在为我的 servlet 和 Jackson 库使用 RestEasy 框架来序列化/反序列化 JSON。我尝试使用 ExceptionMapper 在我的 web.xml 文件中配置异常捕获,但我显然无法捕获该错误并返回空 HTTP 响应。
如何使用 RestEasy 在我的 HTTP 端点上捕获 JSON 反序列化错误?
【问题讨论】:
-
你能发布你的消耗json的方法
标签: java json servlets serialization resteasy