我有一个异常处理程序控制器,我正在捕获HttpMessageNotReadableException,如下所示:
@ExceptionHandler(HttpMessageNotReadableException.class)
@ResponseStatus(value = HttpStatus.BAD_REQUEST)
@ResponseBody
protected ErrorMessage handleJsonException(final HttpMessageNotReadableException ex, final HttpServletRequest request)
{
if (ex.getCause() instanceof JsonParseException)
{
// some code
}
if (ex .getCause() instanceof JsonMappingException)
{
// some code
}
}
我在POST和PUT中遇到格式错误的json(JSON文本中缺少第一个双引号)
{firstName":"abc","lastName":"xyz"}
POST - JsonParseException
PUT - JsonMappingException
我认为两者都应该具有相同的原因“ JsonParseException ”,因为语法错误。
有人可以建议为什么spring为PUT提供不同的“ JsonMappingException ”。
答案 0 :(得分:0)
寻找解决此类问题的方法,我找到了这篇文章 - > http://www.jayway.com/2013/02/03/improve-your-spring-rest-api-part-iii/ 它有一些解决方法的想法,比如使用“getMostSpecificCause”。我正在阅读它以解决我的问题。
答案 1 :(得分:0)
试试这个 //前 - > HttpMessageNotReadableException
Throwable throwable = ex.getCause();
JsonMappingException jsonMappingException = ((JsonMappingException) throwable);
List<JsonMappingException.Reference> references = invalidFormatException.getPath();
for (JsonMappingException.Reference reference : references) {
if (reference.getFieldName() != null) {
field += reference.getFieldName() + ".";
}
}
String message = jsonMappingException.getOriginalMessage();