私は実際に PHP で restfullyii を使って作成した Web サービスをいくつか持っています。
しかし、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;
}
}
そして、ユーザーを逆シリアル化するには、これらの行を使用します:(最初は逆シリアル化応答の結果です)
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
ユーザー属性を逆シリアル化する方法について考えていますか?
ありがとうございました。