2016-02-01 75 views
1

比較JSON結果我有一個匹配的JSON數組:不能似乎在Android的

{ 
    "matches": [{ 
     "match": { 
      "player1_id": 35161770, 
      "player2_id": 35161786, 
      "winner_id": 35161770, 
      "loser_id": 35161786, 
     } 
    }, { 
     "match": { 
      "player1_id": 35161812, 
      "player2_id": 35161778, 
      "winner_id": 35161812, 
      "loser_id": 35161778, 
     } 
    }, { 
     "match": { 
      "player1_id": 35161770, 
      "player2_id": 35161775, 
      "winner_id": 35161775, 
      "loser_id": 35161770, 
     } 
    }] 
} 

我通過這個數組迭代如下:

for (int i = 0; i < matches.length(); i++) 
{ 
    JSONObject object = matches.getJSONObject(i); 
    JSONObject match = object.getJSONObject("match"); 

    if (match.get("winner_id") == match.get("player1_id")) 
    { 
     Log.d("result", "one"); 
    } 
    else if (match.get("winner_id") == match.get("player2_id")) 
    { 
     Log.d("result", "two"); 
    } 
    else 
    { 
     Log.d("result", "tie"); 
    } 
} 

但是,無論我做什麼,結果總是顯示爲tie ...

我在做什麼錯在這裏?

+0

你有沒有使用GSON嘗試,而不是JSONObject的? – hehe

+0

它可能是因爲你使用'.equals()'。'嘗試'match.get(「winner_id」)。equals(match.get(「player2_id」))' – varren

+0

也是,值是什麼'匹配'?因爲在這個結構中,你有 '[{...}]',你可能會想'''而不是 – hehe

回答

2

JSONObject.get("")將返回Object。你可以把它改成:

match.getString("winner_id").equals(match.getString("player1_id")) 

由於@gj_指出的,你也可以使用以下命令:

match.getInt("winner_id") == match.getInd("player1_id") 
+1

或者只是使用getInt? – hehe

+0

@gj_:是的,那會做 – ariefbayu

+0

這工作,謝謝。 –

0

嘗試使用:

JSONObject object = matches.optJSONObject(i);