【发布时间】:2013-10-18 14:08:07
【问题描述】:
我实际上有一些使用 PHP 中的 restfullyii 制作的网络服务。
但是我在用 jackson 反序列化我的 web 服务的响应时遇到了一些麻烦。
这是响应示例:
{"success":true,"message":"Record(s) Found","data":{"totalCount":"1","user":{...}}}
为了反序列化这个响应,我制作了这个模型:
@JsonIgnoreProperties(ignoreUnknown = true)
public class response {
@JsonProperty("data")
private HashMap<String, Object> data;
@JsonProperty("message")
private String message;
@JsonProperty("success")
private Boolean success;
public HashMap<String, Object> getData() {
return data;
}
public void setData(HashMap<String, Object> data) {
this.data = data;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public Boolean getSuccess() {
return success;
}
public void setSuccess(Boolean success) {
this.success = success;
}
}
为了反序列化用户,我使用这些行: (rst 是反序列化响应的结果)
ObjectMapper mapper = new ObjectMapper();
try {
String rstTxt = String.valueOf(rst.getData().get("user"));
System.out.println(rstTxt);
user user = mapper.readValue(rstTxt, user.class);
} catch (JsonParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (JsonMappingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
但它不起作用,因为 "rst.getData().get("user")" 在此模式中返回一个字符串: { 属性 = 值 } 确实,返回了以下异常:
org.codehaus.jackson.JsonParseException: Unexpected character ('i' (code 105)): was expecting double-quote to start field name
您知道如何反序列化用户属性吗?
谢谢。
【问题讨论】:
标签: java json serialization jackson