Swapnil Swapnil - 5 months ago 1162
JSON Question

No content to map due to end-of-input jackson parser

I am getting this response from the server

{"status":"true","msg":"success"}


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 (JsonParseException e) {
e.printStackTrace();
} catch (JsonMappingException e) {
e.printStackTrace();
} catch (IOException 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;
}
}

Answer
        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 (JsonParseException e) {
            e.printStackTrace();
        } catch (JsonMappingException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

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

Comments