我从服务器{“status”:“true”,“msg”:“success”}
收到此响应
我试图使用Jackson解析器库解析这个json字符串,但是不知何故,我遇到了映射异常声明
com.fasterxml.jackson.databind.JsonMappingException: No content to map due to end-of-input
at [Source: java.io.StringReader@421ea4c0; line: 1, column: 1]
为什么我们会有这种例外?
如何理解是什么导致了这个异常?
我正在尝试使用以下方式解析:
StatusResponses loginValidator = null;
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(Feature.AUTO_CLOSE_SOURCE, true);
try {
String res = result.getResponseAsString();//{"status":"true","msg":"success"}
loginValidator = objectMapper.readValue(result.getResponseAsString(), StatusResponses.class);
} catch (Exception e) {
e.printStackTrace();
}
状态响应类
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({ "status","msg" })
public class StatusResponses {
@JsonProperty("status")
public String getStatus() {
return status;
}
@JsonProperty("status")
public void setStatus(String status) {
this.status = status;
}
@JsonProperty("msg")
public String getMessage() {
return message;
}
@JsonProperty("msg")
public void setMessage(String message) {
this.message = message;
}
@JsonProperty("status")
private String status;
@JsonProperty("msg")
private String message;
private Map<String, Object> additionalProperties = new HashMap<String, Object>();
@JsonGetter
public Map<String, Object> getAdditionalProperties() {
return additionalProperties;
}
@JsonSetter
public void setAdditionalProperties(Map<String, Object> additionalProperties) {
this.additionalProperties = additionalProperties;
}
}
我可以修复此错误。就我而言,问题出在客户端。我错误地没有关闭我正在写入服务器的流。我关闭了流,它工作正常。甚至错误听起来像服务器无法识别输入结束。
OutputStream out = new BufferedOutputStream(urlConnection.getOutputStream());
out.write(jsonstring.getBytes());
out.close() ; //This is what I did
在我的例子中,问题是由我向ObjectMapper.read值调用传递一个空输入流引起的:
ObjectMapper objectMapper = ...
InputStream is = null; // The code here was returning null.
Foo foo = objectMapper.readValue(is, Foo.class)
我猜这是此异常的最常见原因。
import com.fasterxml.jackson.core.JsonParser.Feature;
import com.fasterxml.jackson.databind.ObjectMapper;
StatusResponses loginValidator = null;
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(Feature.AUTO_CLOSE_SOURCE, true);
try {
String res = result.getResponseAsString();//{"status":"true","msg":"success"}
loginValidator = objectMapper.readValue(res, StatusResponses.class);//replaced result.getResponseAsString() with res
} catch (Exception e) {
e.printStackTrace();
}
不知道它是如何工作的,为什么它工作?:(但它工作
我正在尝试在我的项目中实现JWTAuthentication。我的实体设置如下: 然后我像这样设置了AuthenticationFilter: 这是我的安全配置: 注册工作正常,但当我尝试使用相同的凭据登录时,会出现以下异常: 由: com.fasterxml.jackson.databind.exc.MismatchedInputException: 由于输入结束,没有要映射的内容 [来源: (
我正在尝试转换下一个字符串: 对于某些自定义对象: 此外,此CustomObject中还有另一个对象: 现在,我正在尝试做以下工作: 但我得到了下一个错误:
考虑以下方法:
问题内容: 我正在针对REST控制器POST处理程序进行集成测试。好吧,我正在努力。 它给我HttpMessageNotReadableException异常:无法读取JSON:由于输入结束,没有内容要映射 这是我的控制器: 基本测试类: 集成测试: 控制台日志必须说些什么: 有什么线索吗? 问题答案: 我将.param()方法替换为.content()方法之一: 现在,它可以按预期工作。
考虑以下方法: 当我从Postman调用WS时,我得到以下异常: 08-Feb-2019 14:23:44.138 GRAVE [http-nio-8080-exec-7] com.sun.jersey.spi.container.ContainerResponse.mapMappableContainerException MappableContainerException MappableC
本文向大家介绍MyBatis输入映射和输出映射实例详解,包括了MyBatis输入映射和输出映射实例详解的使用技巧和注意事项,需要的朋友参考一下 什么是 MyBatis ? MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以对配置和原生Map使用简单的 XML 或注解,将接口