无法读取 JSON:字段名称中的意外 end-of-input
Could not read JSON: Unexpected end-of-input in field name
我正在开发 Spring MVC 网络应用程序。我现在还没开发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 class
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 和 headers 发送请求,请求 link 已正确设置。
{"testVar":"Test","tenantCode":"DEMO"}
请求link
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)
我去投了很多文章还是没找到答案。
你的 json 格式是什么?我认为 json 格式使用文字 \n 作为分隔符,请确保 JSON 操作和来源没有被打印出来。
在 header
中增加 Content-Length:
有效
ARC 中存在一个问题,即没有有效载荷且响应类型为 json。解析器抛出错误,因为字符串为空且响应报告崩溃。
我正在开发 Spring MVC 网络应用程序。我现在还没开发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 class
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 和 headers 发送请求,请求 link 已正确设置。
{"testVar":"Test","tenantCode":"DEMO"}
请求link
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)
我去投了很多文章还是没找到答案。
你的 json 格式是什么?我认为 json 格式使用文字 \n 作为分隔符,请确保 JSON 操作和来源没有被打印出来。
在 header
中增加 Content-Length:
有效
ARC 中存在一个问题,即没有有效载荷且响应类型为 json。解析器抛出错误,因为字符串为空且响应报告崩溃。