gpt4 book ai didi

java - 异常:com. fastxml.jackson.core.JsonParseException:HttpMessageNotReadableException

转载 作者:太空宇宙 更新时间:2023-11-04 09:10:07 24 4
gpt4 key购买 nike

当我尝试使用以下输入在 java Spring boot 中使用 boolean 字段的无效值发布消息时,出现 HttpMessageNotReadableException:

{
"User":"xyz",
"email":"xyz@email.com",
"isAdmin":"No" ( This is Boolean in my API Bean expecting true or false)
}

我分别在控制台和响应正文中收到以下错误消息:

com.fasterxml.jackson.core.JsonParseException: Unrecognized token 'yes': was expecting ('true', 'false' or 'null')at [Source: (PushbackInputStream); line: 29, column: 29]

以下响应正文:

{
"Code": "JSON_REQUEST_INVALID",
"status": 400,
"error": "Bad Request",
"message": "JSON parse error: Unrecognized token 'yes': was expecting ('true', 'false' or 'null'); nested exception is com.fasterxml.jackson.databind.JsonMappingException: Unrecognized token 'yes': was expecting ('true', 'false' or 'null')\n at [Source: (PushbackInputStream); line: 29, column: 7] (through reference chain: com.sample.model.apibeans.userDetails[\"user\"])",
"path": "/userapi/v1"

}

但是我希望错误消息更具体,例如字段“isAdmin”中不允许"is"!因为上面的消息没有提供有关哪个字段导致错误的太多信息。

我在下面使用了 @ControllerAdvice 来捕获并覆盖该消息,但是我无法获取发生此错误的字段。下面是异常处理方法的实现。

    @ExceptionHandler(HttpMessageNotReadableException.class)
@ResponseStatus(code = HttpStatus.BAD_REQUEST)
@ResponseBody
protected Errors handleHttpMessageNotReadableException(InputMismatchException ex, WebRequest request) {

Errors errors = new Errors();
Error error;
error = new Error();
error.setParams(null);
error.setMessage("Json Contains "+ex.getCause());
error.setTraceId(request.getHeader(TRACE_ID_HEADER_NAME));
error.setStatus(Integer.toString(HttpStatus.BAD_REQUEST.value()));
error.setCode("JSON_REQUEST_INVALID");
errors.addErrorsItem(error);
return errors;
}

Ex 对象不提供任何方法来获取发生此情况的路径或字段。我如何获取该信息以便向消费者提供更具体的错误消息。

注意:我使用的是 Spring Boot 2.2.1

我已经在 Stack-overflow 上看到了其他类似的问题,但没有一个能够解决这个问题。

最佳答案

好吧,我还没有获得 java 方法来获取确切的字段,但是由于错误的模式,我得出了以下可能有用的字段提取的结论。

 String  param= (String) ex.getMessage().subSequence(ex.getMessage().lastIndexOf("[")+1,ex.getMessage().lastIndexOf("]"));

这会获取发生错误的确切字段,并向客户端提供动态消息,如下所示:

  {
"Code": "JSON_REQUEST_INVALID",
"status": 400,
"error": "Bad Request",
"message": "unexpected value at isAdmin",
"path": "/userapi/v1"
}

关于java - 异常:com. fastxml.jackson.core.JsonParseException:HttpMessageNotReadableException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59751982/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com