[英]Android Jackson Library parsing
獲取服務器響應后,出現“無法將JSONObject強制轉換為ClassResponse”錯誤。 我猜是因為服務器的響應與ClassResponse中的字段不匹配? 是否由於JSON響應中的“數據”結構? 我對每個領域都有一個二傳手,但不確定我在做什么錯。 有沒有一種方法可以更改Jackson庫的注釋以解析json對象的其他層? 例如..
@JsonProperty(“ data:accessToken”)或類似性質的東西?或者甚至有必要嗎?
服務器響應:
{
success: "true"
message: "Record Created"
data: {
userToken : "1"
}
}
ClassResponse:
@JsonIgnoreProperties(ignoreUnknown = true)
public class LoginResponse extends Response<LoginResponse.Result>
{
public static class Result
{
private String mUserToken;
private String mAccessToken;
private String mUserId;
public String getUserToken(){
return mUserToken;
}
@JsonProperty("userToken")
public void setUserToken(final String aUserToken){
mUserToken = aUserToken;
}
public String getAccessToken(){
return mAccessToken;
}
@JsonProperty("accessToken")
public void setAccessToken(final String aAccessToken){
mAccessToken = aAccessToken;
}
public String getUserId(){
return mUserId;
}
@JsonProperty("user_id")
public void setUserId(final String aUserId){
mUserId = aUserId;
}
}
}
(edit)
@JsonProperty("data")
public void accessDataLayer(final String data) throws JSONException {
JSONObject jobj = new JSONObject(data);
mUserToken = jobj.getString("userToken");
mAccessToken = jobj.getString("accessToken");
mUserId = jobj.getString("user_id");
}
@Override
public RESULT loadDataFromNetwork() throws Exception{
final String url = buildUrl();
HttpURLConnection conn = (HttpURLConnection) new URL(url).openConnection();
String response;
try{
conn.setDoInput(true);
conn.setDoOutput(true);
MultipartEntity entity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
JSONObject submitInfo = new JSONObject();
submitInfo = buildParams(entity);
OutputStreamWriter out = new OutputStreamWriter(conn.getOutputStream());
out.write(submitInfo.toString());
out.close();
response = readStream(conn.getErrorStream());
conn.disconnect();
}
return parse(response);
因為您正在嘗試在“ LoginResponse.class”集合中反序列化整個JSONObject。 沒關系,因為LoginResponse是JSON響應中數組“數據”的元素,但不是整個響應! 為了得到數組,你應該寫這樣的東西
JsonArray data = (JsonArray) JSONObject.getAsJsonArray("data")
然后,您將獲得“數據”集合
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.