0

ちょっと気になったので質問です。私はJSONにまったく慣れておらず、Android APIでJSON値を取得しています。取得した応答内の配列にアクセスしようとしています。私が取得している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) {

}

私が最も混乱しているのは...配列型と同等のものは何ですか。その変数の値を把握するための正しい方法に関するアドバイスや推論は素晴らしいでしょう...みんなに感謝します.. :)。

4

3 に答える 3

1

ドメインオブジェクトの作成を除いて、シリアライズとデシリアライズのすべての作業を行うため、優先パーサーとして代わりに gson を使用することを強くお勧めします。このチュートリアルでは、次の手順を実行できます: http://www.javacodegeeks.com/2011/01/android-json-parsing-gson-tutorial.html

于 2012-04-13T17:42:19.457 に答える
1

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
}

補足として、基になるプロトコルを少なくとも少し理解するまで、GSON を使用しません。なぜなら、何らかの理由で別の言語から JSON をいつ解析する必要があるかがわからないからです。

于 2012-04-13T17:59:55.903 に答える
1

これは、サーバーが何を返すかによって異なります。それは何でも配列である可能性があり、これが公共サービスである場合は、仕様が必要です。

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

于 2012-04-13T17:42:53.253 に答える