Handle DefaultHandlerExceptionResolver:org.springframework.http.converter.HttpMessageNotReadableException:JSON解析错误:意外字符

问题描述 投票:1回答:1

我收到以下错误消息

WARN 13712 --- [nio-8080-exec-9] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved exception caused by handler execution: org.springframework.http.converter.HttpMessageNotReadableException: 
JSON parse error: Unexpected character (',' (code 44)): expected a value; nested exception is com.fasterxml.jackson.core.JsonParseException: Unexpected character (',' (code 44)): expected a value at [Source: java.io.PushbackInputStream@1db33478; line: 2, column: 16]

我正在使用像这样的spring框架。

@GetMapping("/access")
public HashMap<String, Object> getAccess() {
    HashMap<String, Object> response = new HashMap<String, Object>();
    ArrayList<Access> list = new ArrayList<Access>();
    BdConector bd = BdConector.getInstance();
    list = bd.getAllAccess();

    if (list != null) {
        response.put("result", "200");
    } else {
        response.put("result", "500");
    }
    response.put("items", list);
    return response;
}

解析器异常发生时,我想记录json正文内容。

java json spring parsing error-logging
1个回答
0
投票

尝试这样的事情...

@ExceptionHandler(com.fasterxml.jackson.core.JsonParseException.class)
        public ResponseEntity<Object> handleException(com.fasterxml.jackson.core.JsonParseException ex) {
            LOG.error("Error parse json " +  ex.getMessage());
            ...
        }

不太清楚如何提取无效json的原始字符串,也许是在异常的“ getMessage()”中,如图所示。无论如何,您可以调试“ ex”文件并查找如何正确获取它。

© www.soinside.com 2019 - 2024. All rights reserved.