由于输入结束的jackson解析器,没有要映射的内容 [英] No content to map due to end-of-input jackson parser

查看:3016
本文介绍了由于输入结束的jackson解析器,没有要映射的内容的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我从服务器获得此响应 {status:true,msg:success}

I am getting this response from the server {"status":"true","msg":"success"}

我试图使用Jackson解析器库解析这个json字符串,但不知何故我正面临映射 - 异常陈述

I am trying to parse this json string using Jackson parser library but somehow I am facing mapping-exception stating

com.fasterxml.jackson.databind.JsonMappingException: No content to map due to end-of-input
 at [Source: java.io.StringReader@421ea4c0; line: 1, column: 1]

为什么我们会遇到这种例外?

Why do we get this kind of exceptions?

如何理解导致此异常的原因?

How to understand what is causing this exception?

我正在尝试使用以下方式解析:

I am trying to parse using following way:

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();
}

StatusResponse class

@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;
}
}


推荐答案

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();
}

不知道它是如何工作的以及为什么有效? :(但它有效

Dont know how it worked and why it worked? :( but it worked

这篇关于由于输入结束的jackson解析器,没有要映射的内容的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆