2012-04-13 32 views
0

私は少し混乱しているとの質問があります。私はJSONの新機能で、アンドロイドAPIでJSON値を取得しています。私は応答の中で配列にアクセスしようとしています。 JSONコードは次のようなものです:AndroidでJSONからオブジェクトにアクセスする

Response: 
{ 
"event": { 
    "participants": [] 
}, 
"status": "success" 
} 

参加者の配列にアクセスして値を保存するにはどうすればよいですか。これは私が現時点で試みていることです...しかし、私は私が欲しいものを得るように見えません。

try{ 
       //get the JSON values from the URL. 
       JSONObject json = jParser.getJSONFromUrl("http://somesite.com/api/find?"+"somevar="+someJavaStringVar); 

       json_event = json.getJSONObject("event"); 

       JSONArray json_array_participants = json_event.getJSONArray("participants"); 

} catch(JSONException e) { 

} 

私がほとんど混乱しているのは...とはどのような配列型ですか?その変数の値を取得する正しい方法についてのアドバイスや推論は素晴らしいでしょう...ありがとうございます.. :)。

答えて

1

Think JSONは本当に単なるキーと値のペアです。 JSONArray型は、オブジェクト(たとえばObject[]など)でいっぱいになっている配列です。オブジェクトに含まれるオブジェクトやオブジェクトが何に使用されるのかはわかりません。ソースの内容に基づいてJSONストリームに意味を割り当てます。あなたのコードを見ると、jParser.getJSONFromURL()が何をしているのか分かりませんが、ほとんどのコードは正常に見えます。一般的に、あなたはそうのような応答文字列からJSONを構築します:

String jsonString = getJSONFromUrl("http://somesite.com/api/find?"+"somevar="+someJavaStringVar); 

JSONObject json = new JSONObject(jsonString) 

JSONObject json_event = json.getJSONObject("event"); 

JSONArray json_array_participants = json_event.getJSONArray("participants"); 

あなたがサブオブジェクトまたは何を取得するために、任意の他の配列と同じ配列を反復処理することができます注意点として

for(int i=0; i < json_array_participants.getLength(); i++) { 
    JSONObject participant = json_array_participants.getJSONObject(i); 
    // Do stuff 
} 

を - I何らかの理由でJSONをいつ別の言語から解析したいのか分からないので、少なくとも基本的なプロトコルを理解するまでGSONを使用しないでください。

+0

実際にこれはかなり多くは、非常にたくさん私を助けて...私はこの問題を解決することができたので。私の上司が数日前に私を知らないうちにjsonの応答を更新し、私が探していたフィールドを取り除きました...今すぐすべての正しいコードを入れて、それは異なるjsonオブジェクトの配列を取得しています。それらを文字列に変換し、エラーなしでリストビューに貼り付けます。 – jimbob

+0

明確にするために:これは私が探していた答えでした! – jimbob

1

ドメインパーサーを作成する以外は、シリアライズとデシリアライズのすべての作業を行うため、推奨パーサとしてgsonを使用することを強くお勧めします。 このチュートリアルでは、次の作業を進めていきます。 http://www.javacodegeeks.com/2011/01/android-json-parsing-gson-tutorial.html

+0

私は実際に名前の配列を返すと思われる参加者配列にアクセスする方法を知りました。ありがとう。 { 「イベント」:{ 「参加者」:[] }、 「状態」:「成功」 } – jimbob

1

これは、サーバーが返すものに依存します。それは何かの配列になる可能性があり、これが公共サービスであれば、外出する仕様があるはずです。

サーバーの部分も担当していて、バッキングオブジェクトを持っている場合、GoogleのGSONライブラリは非常に使いやすいです。また、タイプ情報もまっすぐに保ちます。

関連する問題