无法读取 JSON:字段名称中出现意外的输入结束

Posted

技术标签:

【中文标题】无法读取 JSON:字段名称中出现意外的输入结束【英文标题】:Could not read JSON: Unexpected end-of-input in field name 【发布时间】:2016-08-11 17:41:05 【问题描述】:

我正在开发一个 Spring MVC Web 应用程序。我还没有开发 UI。所以我正在使用 Advance Rest Client 工具测试我的服务。

我的控制器

@Controller
@RequestMapping("/testController")
public class TestController 

@Autowired
private TestService testService;

@RequestMapping(value = "/test", method = RequestMethod.POST, consumes =  MediaType.APPLICATION_JSON_VALUE ,  produces =  MediaType.APPLICATION_JSON_VALUE )
public
@ResponseBody void testMethod(@RequestBody TestParam testParam) 

    String tenant = testParam.getTenantCode();
    String testString = tenant + " is the tenant";


TestParam.java 类

public class TestParam 

private String testVar;
private String tenantCode;

public String getTenantCode() 
    return tenantCode;


public void setTenantCode(String tenantCode) 
    this.tenantCode = tenantCode;


public String getTestVar() 
    return testVar;


public void setTestVar(String testVar) 
    this.testVar = testVar;


我使用 Advance Rest Client 发送请求,并且标头和请求链接已正确设置。

"testVar":"Test","tenantCode":"DEMO"

请求链接

http://localhost:8080/myApp/controller/testController/test

当 TestParam 有一个可验证时,它可以正常工作。当它变成两个或更多时,它会给出一个错误并且它没有命中 testMethod。

exception is com.fasterxml.jackson.core.JsonParseException:  Unexpected end-of-input in field name at [Source:org.apache.catalina.connector.CoyoteInputStream@7b24d498; line: 1, column: 43]
at org.springframework.http.converter.json.MappingJackson2HttpMessageConverter.readJavaType(MappingJackson2HttpMessageConverter.java:181)
at org.springframework.http.converter.json.MappingJackson2HttpMessageConverter.read(MappingJackson2HttpMessageConverter.java:173)
at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver.readWithMessageConverters(AbstractMessageConverterMethodArgumentResolver.java:135)

我去扔了更多的文章,但我仍然找不到答案。

【问题讨论】:

您的代码看起来不错。你能试试其他客户端,比如 'POSTman',看看 ARC 是不是把事情搞砸了。 【参考方案1】:

header 中增加Content-Length: 有效

【讨论】:

另外,可以从header中删除Content-Length:【参考方案2】:

你的 json 格式是什么?我认为 json 格式使用文字 \n 作为分隔符,请确保 JSON 操作和源没有被很好地打印出来。

【讨论】:

【参考方案3】:

ARC 中存在一个问题,即没有有效负载并且响应是 json 类型。解析器抛出错误,因为字符串为空且响应报告崩溃。

【讨论】:

以上是关于无法读取 JSON:字段名称中出现意外的输入结束的主要内容,如果未能解决你的问题,请参考以下文章

无法在 React.js 中读取 json,出现意外的令牌错误

Node.js 中 json 输入的意外结束

构建管道中的 NPM“解析附近时 JSON 输入意外结束”

执行 mochawesome-merge 时出现“JSON 输入意外结束”

Void SpringMVC Ajax 控制器上的“JSON 输入意外结束”

通过 npm 安装 firebase 时遇到错误 |在 [关闭] 附近解析时 JSON 输入意外结束