0

私は実際に 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

ユーザー属性を逆シリアル化する方法について考えていますか?

ありがとうございました。

4

1 に答える 1