2012-11-26 19 views
84

私の質問。誰もそれに尋ねたり答えたりしたことはありません。Android(JSONObject)フラットJSONオブジェクトをループして各キーと各値を取得するにはどうすればよいですか

{"number1":"value1", "number2":"value2", "number3":"value3" } 

私はそれがうまくJSONObjectに設定することができます

私は平らなJSONを持っています。しかし、私はどのように各項目をループし、キー文字列と値文字列を取得するのか分かりません。

誰でもJSONObjectを使用するための効率的なコードを提供できますか?私が本当に欲しいのは、キーや値を事前に知らなくても各アイテムのキーと値を取得することです。

ありがとうございます。

+1

http://stackoverflow.com/questions/9151619/java-iterate-over- jsonobject –

答えて

253

イテレータをすべて反復処理するには、keys()を使用し、それぞれに対してget()を呼び出します。

Iterator<String> iter = json.keys(); 
while (iter.hasNext()) { 
    String key = iter.next(); 
    try { 
     Object value = json.get(key); 
    } catch (JSONException e) { 
     // Something went wrong! 
    } 
} 
+5

注:(String s:json.keys())の短縮形は使用できません{...} JSONArrayもJSONObjectも反復可能でないのは本当に残念です。 :-( – tudor

+0

ここでjsonとは何ですか?Json Object、Json Arrayなど何でもいいですか? –

+1

@PravinsinghWaghelaそれは質問 –

-1

JSONObjectの参照を見てみましょう:Iteratorを返し

http://www.json.org/javadoc/org/json/JSONObject.html

実際にオブジェクトを使用しない、それはによりgetNames()またはキー(のいずれかを使用してのように見えますが)への道であります行く。

+1

で指定されたJSONObjectです。間違ったリンクです。Androidの 'JSONObject'には' getNames() 'はありません。 http://developer.android.com/reference/org/json/JSONObject.html – Weetu

3

keys()またはnames()メソッドを使用してください。 keys()はオブジェクト内のすべてのStringプロパティ名を含むイテレータを返しますが、names()はすべてのキーString名の配列を提供します。

あなたがここにJSONObjectのドキュメントを取得することができます

http://developer.android.com/reference/org/json/JSONObject.html

59
フランシの答えの

ショートバージョン:

for(Iterator<String> iter = json.keys();iter.hasNext();) { 
    String key = iter.next(); 
    ... 
} 
+1

非常にエレガントで非常に便利です! – Cocorico

+0

ここにjsonとは何ですか?Json Object、Json Arrayまたはその他のもの –

+0

jsonはJsonObjectです –

関連する問題