末我有看起来像这样的一个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