Я получаю этот ответ от сервера {"status":"true","msg":"success"}
Я пытаюсь проанализировать эту строку json, пользующуюся библиотекой синтаксического анализатора Jackson, но так или иначе я сталкиваюсь с утверждением исключения отображения
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();
}
Класс StatusResponse
@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;
}
}
В моем случае проблема была вызвана моей передачей пустого InputStream к вызову ObjectMapper.readValue:
ObjectMapper objectMapper = ...
InputStream is = null; // The code here was returning null.
Foo foo = objectMapper.readValue(is, Foo.class)
я предполагаю, что это - наиболее распространенная причина этого исключения.
У меня была подобная ошибка сегодня, и проблемой был заголовок типа контента запроса сообщения. Удостоверьтесь, что тип контента - то, что Вы ожидаете. В моем случае "multipart/form-data" заголовок типа контента отправлялся в API вместо "application/json".
В моем случае я читал поток в свитере RequestEventListener, который я создал на стороне сервера для входа тела запроса до обрабатываемого запроса. Я затем понял, что это, вероятно, привело к последующему чтению для получения никакой строки (который является тем, что передается, когда бизнес-логика выполняется). Я проверил это для имения место.
Поэтому, если Вы используете потоки для чтения строки JSON остерегаться этого.