2013-10-18 39 views
0

我實際上已經在PHP中使用restfullyii創​​建了一些web服務。Jackson反序列化restfullyii的響應

但我有一些麻煩反序列化傑克遜我的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.get 。數據()獲取(「用戶」)」返回這個模式的字符串: {屬性=值} 事實上,返回以下異常:

org.codehaus.jackson.JsonParseException: Unexpected character ('i' (code 105)): was expecting double-quote to start field name 

有你,我怎麼可以做一個想法反序列化用戶屬性?

謝謝。

回答

0

我很猜測,但也許,因爲你已經定義了一個Map<String, Object>,您的用戶應該已經被反序列化爲一個對象,也許你應該只是嘗試投它:

User user = (User) rst.getData().get("user"); 

否則,你可以稍微修改代碼精確匹配響應,如:

public class Response { 
    private String message; 
    private Boolean success; 
    private Data data; 
} 

public class Data { 
    private String totalCount; 
    private User user; 
} 

以這種方式,你應該讓所有的事情都可以反序列化。

提示:如果您的變量名稱相同,則不需要@JsonProperty註釋!