2013-10-29 184 views
-1

我有一個JSON數組相當於Android的JSON小問題

{ 
"genre":"2", 
"imported_from":"1", 
"release_year":"1999", 
"import":"1", 
"label":"1", 
"artist":"Boards Of Canada ", 
"album_title":"Music Has The Right To Children", 
"formats":"1" 

}

我能夠通過

JSONObject jsonObject = jsonArray.getJSONObject(i); 

jsonObject.optString("genre"); 

但我怎麼可以通過索引訪問它來獲取領域試過jsonObject.optInt(0);但一點兒也不工作

回答

2

編輯:Android沒有提供可以使用索引的API的原因是因爲在JSON規範中標籤之間沒有順序,這意味着「流派」標籤並不總是第一個元素(this實際上依賴於JSON解析器使用),所以下面是一個壞主意:

這不是有效的,但它的工作原理:

private int getInt(JSONObject jsonObject, int index) { 
    int counter = 0; 
    for(Iterator<String> i = jsonObject.keys(); i.hasNext();) { 

     String item = i.next(); 

     if(counter == index){ 
      return jsonObject.optInt(item); 
     } 

     counter++; 
    } 

    return -1; //or default value/error 
} 
2

你只能只在JSON數組獲得通過TAG_NAME的值,因爲它是一個標籤和標籤值它不是Json的

{ 
"genre":"2", 
"imported_from":"1", 
"release_year":"1999", 
"import":"1", 
"label":"1", 
"artist":"Boards Of Canada ", 
"album_title":"Music Has The Right To Children", 
"formats":"1" 
} 
{ 
"genre":"2", 
"imported_from":"1", 
"release_year":"1999", 
"import":"1", 
"label":"1", 
"artist":"Boards Of Canada ", 
"album_title":"Music Has The Right To Children", 
"formats":"1" 
} 
{ 
"genre":"2", 
"imported_from":"1", 
"release_year":"1999", 
"import":"1", 
"label":"1", 
"artist":"Boards Of Canada ", 
"album_title":"Music Has The Right To Children", 
"formats":"1" 
} 

的整個數組,如果你是這樣的事情再從索引你得到的第一個索引只是第一個數組(在兩個{}之間的所有標籤和值),你會得到。