在Android上使用GSON来解析JSON数据

时间:2013-08-13 18:13:57

标签: java android json gson

我正在尝试使用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()); 

我可以在变量result中看到我的JSON,但程序会抛出异常。

你能看到我的代码中有任何错误吗?

1 个答案:

答案 0 :(得分:-1)

首先:在你的json中添加一个root。你可以通过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>();
}