サーバーからこの応答を取得しています{"status":"true","msg":"success"}
私はジャクソンパーサーライブラリを使用してこの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();
}
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;
}
}
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();
}
それがどのように機能し、なぜ機能したのか分からないのですか? :(しかし、それは働いた
このエラーを修正できました。私の場合、問題はクライアント側にありました。誤って、サーバーに書き込んでいたストリームを閉じませんでした。ストリームを閉じたところ、うまくいきました。サーバーが入力の終わりを特定できなかったように聞こえます。
OutputStream out = new BufferedOutputStream(urlConnection.getOutputStream());
out.write(jsonstring.getBytes());
out.close() ; //This is what I did
今日、同様のエラーが発生し、問題は投稿リクエストのコンテンツタイプヘッダーにありました。コンテンツタイプが期待どおりであることを確認してください。私の場合、「application/json」ではなく「multipart/form-data」コンテンツタイプヘッダーがAPIに送信されていました。