1

以下の Json 応答を Google Gson で解析する方法は?

{
   "rootobject":[
      {
         "id":"7",
         "name":"PP-1",
         "subtitle":"name-I",
         "key1":"punjab",
         "key12":"2013",
         "location":"",
         "key13":"0",
         "key14":"0",
         "key15":"0",
         "result_status":null
      },
      {
         "id":"7",
         "name":"PP-1",
         "subtitle":"name-I",
         "key1":"punjab",
         "key12":"2013",
         "location":"",
         "key13":"0",
         "key14":"0",
         "key15":"0",
         "result_status":null
      },
      {
         "id":"7",
         "name":"PP-1",
         "subtitle":"name-I",
         "key1":"punjab",
         "key12":"2013",
         "location":"",
         "key13":"0",
         "key14":"0",
         "key15":"0",
         "result_status":null
      },
      {
         "id":"7",
         "name":"PP-1",
         "subtitle":"name-I",
         "key1":"punjab",
         "key12":"2013",
         "location":"",
         "key13":"0",
         "key14":"0",
         "key15":"0",
         "result_status":null
      }
   ]
}
4

2 に答える 2

5

次のように、応答を「ラップ」するオブジェクトを作成します。

public class Response {

  @SerializedName("root_object")
  private List<YourObject> rootObject;

  //getter and setter
}


public class YourObject {

  @SerializedName("id")
  private String id;
  @SerializedName("name")
  private String name;
  @SerializedName("subtitle")
  private String subtitle;
  //... other fields

  //getters and setters
}

注: @SerializedName アノテーションを使用して、JSON データ内の名前を一致させながら、Java 属性の命名規則に従います。

Reponse次に、次のように、JSON をオブジェクトで解析します。

String jsonString = "your json data...";
Gson gson = new Gson();
Response response = gson.fromJson(jsonString, Response.class);

Responsegetter と setter を使用して、オブジェクト内のすべてのデータにアクセスできるようになりました。

注:Responseオブジェクトは、さまざまな JSON 応答を解析するために使用される場合があります。たとえば、idまたはsubtitleフィールドを含まない JSON 応答を持つことができますが、オブジェクトは応答も解析し、このフィールドReponseに a を入れるだけです。nullこのようにして、1 つのクラスだけを使用Responseして、考えられるすべての応答を解析できます...

編集: Android タグに気づきませんでした。通常の Java プログラムでこのアプローチを使用しています。Android で有効かどうかはわかりません...

于 2013-04-06T13:10:49.937 に答える
1

あなたはこれがうまくいくことを願って試すことができます

 // Getting Array 
JSONArray contacts = json.getJSONArray("rootobject");
SampleClass[] sample=new SampleClass[contacts.length]();

    // looping through All 
    for(int i = 0; i < contacts.length(); i++){
        JSONObject c = contacts.getJSONObject(i);

        // Storing each json item in variable
        sample[i].id = c.getString("id");
        sample[i].name = c.getString("name");
        sample[i].email = c.getString("subtitle");
        sample[i].address = c.getString("key1");
        sample[i].gender = c.getString("key12");
        sample[i].gender = c.getString("location");
        sample[i].gender = c.getString("key13");
        sample[i].gender = c.getString("key14");
        sample[i].gender = c.getString("key15");
        sample[i].gender = c.getString("result_status");
       }
于 2013-04-06T13:19:59.547 に答える