-1

私はと同等の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); を試してみました。しかし、動作しません

4

2 に答える 2

2

編集: Android がインデックスを使用できる API を提供しない理由は、JSON 仕様ではタグ間に順序がないためです。つまり、「ジャンル」タグが常に最初の要素になるとは限りません (これは実際には 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
}
于 2013-10-29T09:58:10.230 に答える
2

タグであり、そのタグ値はJsonの配列全体ではないため、Json配列でのみTAG_NAMEによってのみ値を取得できます

{
"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"
}

あなたがこのようなものであれば、インデックスから最初の配列(2つの{}すべてのタグと値の間)のみである最初のインデックスを取得します。

于 2013-10-29T09:47:47.753 に答える