1

我正在尝试使用 Gson 来解析以下 JSON 数据:

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

我有两个实体来封装 JSON 数据:

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 回答