1

Gson を使用して、次の JSON データを解析しようとしています。

[
  {
    "idRed":1,
    "nombre":"XXXX",
    "imagen":"XXXXX.png",
    "imagenPublica":"XXXXX.png",
    "grupos":[
      {
        "idGrupo":-1,
        "nombre":"Todos"
      },
      {
        "idGrupo":1,
        "nombre":"Principal"
      }
    ]
  },
  ...
]

JSON データをカプセル化するエンティティが 2 つあります。

public class Red implements Parcelable {
    @SerializedName("idRed")
    private long idRed = 0; 
    @SerializedName("nombre")
    private String nombre = ""; 
    @SerializedName("imagen")
    private String url = "";    
    @SerializedName("grupos")
    private ArrayList<Grupo> grupos = new ArrayList<Grupo>();

    //getters and setters
}

と:

public class Grupo implements Parcelable {  
    @SerializedName("idGrupo")
    private long idGrupo = 0;        
    @SerializedName("idRed")
    private long idRed = 0;
    @SerializedName("nombre")
    private String nombre = null;

    //getters and setters
}

そして最後に、JSON データを解析するための次のコードがあります。

Gson gson = new Gson();
List<Red> redes = (List<Red>) gson.fromJson(result, new TypeToken<List<Red>>() {}.getType()); 

variable で JSON を確認できますresultが、プログラムは例外をスローします。

コードにバグはありますか?

4

1 に答える 1

-1

最初: json にルートを追加します。post/get でこの json をフェッチした後、文字列操作で実行できます。

{
result: [
  {
      "idRed":1,
      "nombre":"XXXX",
      "imagen":"XXXXX.png",
      "imagenPublica":"XXXXX.png",
      "grupos":[
         {
            "idGrupo":-1,
            "nombre":"Todos"
         },
         {
            "idGrupo":1,
            "nombre":"Principal"
         }
       ]
  },
  ...
]
}

root に新しいクラスを追加します。残りのクラスは引き続き使用できます。

public class Result implements Parcelable {
    @SerializedName("result")
    private ArrayList<Red> grupos = new ArrayList<Red>();
}
于 2013-08-13T20:40:46.177 に答える