末我有看起來像這樣的一個REST Web服務的響應: -爲什麼JSON ObjectMapper扔java.io.EOFException的:沒有內容映射到對象因輸入
{
"number":447919191231,
"messages":"",
"receipt":{
"uid":"5d1bddf5-1b98-4a32-8ebf-f71c3973e7a8",
"messages":"",
"status":"SUCCESS",
"code":"09641",
"ttl":120,
"url":"http:\/\/server:8080\/x\/d6985"
}
}
和我嘗試使用
http://wiki.fasterxml.com/JacksonInFiveMinutes#Full_Data_Binding_.28POJO.29_Example
我創建了一個類,它看起來像這樣完整數據這裏列出的方法綁定例如: -
public class ReceiptResponse {
private int _number;
private String _messages;
private Receipt _receipt;
public int getNumber() { return _number; }
public void setNumber(int number) { this._number = number; }
public String getMessages() { return _messages; }
public void setMessages(String messages) { this._messages = messages; }
public Receipt getReceipt() { return _receipt; }
public void setReceipt(Receipt receipt) { this._receipt = receipt; }
public static class Receipt {
private String _uid;
private String _messages;
private String _status;
private int _code;
private int _ttl;
private String _url;
public String getUid() { return _uid; }
public void setUid(String uid) { this._uid = uid; }
public String getMessages() { return _messages; }
public void setMessages(String messages) { this._messages = messages; }
public String getStatus() { return _status; }
public void setStatus(String status) { this._status = status;}
public int getCode() { return _code; }
public void setCode(int code) { this._code = code; }
public int getTtl() { return _ttl; }
public void setTtl(int ttl) { this._ttl = ttl; }
public String getUrl() { return _url; }
public void setUrl(String url) { this._url = url; }
}
}
我的代碼來解析這種反應是這樣的: -
ObjectMapper mapper = new ObjectMapper();
ReceiptResponse response = mapper.readValue(method.getResponseBodyAsStream(), ReceiptResponse.class);
但它引發以下錯誤: -
12:03:44,195 ERROR [STDERR] Fatal transport error: No content to map to Object due to end of input
12:03:44,195 ERROR [STDERR] java.io.EOFException: No content to map to Object due to end of input
12:03:44,196 ERROR [STDERR] at org.codehaus.jackson.map.ObjectMapper._initForReading(ObjectMapper.java:1630)
12:03:44,196 ERROR [STDERR] at org.codehaus.jackson.map.ObjectMapper._readMapAndClose(ObjectMapper.java:1580)
12:03:44,196 ERROR [STDERR] at org.codehaus.jackson.map.ObjectMapper.readValue(ObjectMapper.java:1158)
誰能幫我解釋爲什麼發生這種情況?我想也許是因爲這些信息是空的,但我試圖將虛假數據放在那裏,但仍然失敗。我查找了ObjectMapper代碼,它似乎認爲它找不到第一個標記(我是否正確?),但我看不出它爲什麼無法找到它?
任何幫助將不勝感激!
但是它是如何解決的? – andyb 2011-10-11 14:51:04
答案在哪裏? – 2013-06-26 08:25:34