GSON与JSONArray在其他JSONArray中?

时间:2014-12-08 13:05:42

标签: android json gson arrays

我有一个包含一些JSONArray的JSON,在这些JSONArray中有其他JSONArray。我想获得这些JSONArray并与Gson一起使用来创建我的对象。我该怎么办?

我在这里尝试:

JSON

"aberto": [
                {
                    "ID": "17",
                    "player1": "fernando@domain.com.br",
                    "player2": "opponent@domain.com",
                    "data_inicio": "2014-12-05 16:32:03",
                    "data_fim": null,
                    "status": "0",
                    "ID_arena": "1",
                    "vez_player": "fernando@domain.com.br",
                    "player_vencedor": null,
                    "adversario": [
                        {
                            "ID": "9",
                            "nome": "Joao Paulo",
                            "email": "opponent@domain.com",
                            "foto": "e8357f1a1d05334f08c84d2de0049234.png",
                            "status": "1",
                            "online": "0",
                            "pontuacao": "1190",
                            "graduacao": "Ministro"
                        }
                    ],
                    "badges": []
                },

GSON

try {
    JSONObject objRetorno = obj.getJSONObject("retorno");
    JSONObject objBatalhas = objRetorno.getJSONObject("batalhas");                                                                                                                                                      
    Gson gson = new Gson();

    JSONArray arrayAberto = objBatalhas.getJSONArray("aberto");
    List<Batalha> listBatalha = new ArrayList<Batalha>();
    for(int x = 0; x < arrayAberto.length(); x++){
        JSONObject jsObj = arrayAberto.getJSONObject(x);                                    
        Batalha batalha = gson.fromJson(jsObj.toString(), Batalha.class);                                                                               

        Usuario usuario = gson.fromJson(jsObj.getString("adversario"), Usuario.class);
        batalha.addAdversario(usuario);
        Log.i("USUARIO: ", usuario.getNome());
        listBatalha.add(batalha);
    }
} catch (JSONException e) {
                                                                                    e.printStackTrace();
    }

//batalha
public class Batalha implements Serializable{
    private static final long serialVersionUID = 1L;

    @SerializedName("ID")
    private Long id;

    private String player1;
    private String player2;
    private String data_inicio;
    private String data_fim;
    private int status;
    private int ID_arena;
    private String vez_player;
    private String player_vencedor;

    private List<Usuario> adversarios = new ArrayList<Usuario>();

    public Batalha() {  
    }


    /** add usuario */
    public void addAdversario(Usuario u){
        adversarios.add(u);
    }


//usuario
public class Usuario implements Serializable{
    private static final long serialVersionUID = 1L;

     private Long id;
     private String nome;
     private String email;
     private String senha;
     private String foto;
     private Integer pontuacao;
     private String graduacao;

1 个答案:

答案 0 :(得分:0)

我解决了问题

我做到了。

//define batalha

    JSONObject objRetorno = obj.getJSONObject("retorno");
    JSONObject objBatalhas = objRetorno.getJSONObject("batalhas");                                                                                                                                                      
    Gson gson = new Gson();

    JSONArray arrayAberto = objBatalhas.getJSONArray("aberto");
    List<Batalha> listBatalha = new ArrayList<Batalha>();
    //batalha
    for(int x = 0; x < arrayAberto.length(); x++){
        JSONObject jsObj = arrayAberto.getJSONObject(x);                                    
        Batalha batalha = gson.fromJson(jsObj.toString(), Batalha.class);                                                                               

        //adversario
        JSONArray arrayAdversario = jsObj.getJSONArray("adversario");
        for(int i = 0; i < arrayAdversario.length(); i++){
            JSONObject jsAdvers = arrayAdversario.getJSONObject(i);
            Usuario usuario = gson.fromJson(jsAdvers.toString(), Usuario.class); 
            batalha.addAdversario(usuario);
            Log.i("USUARIO: ", usuario.getNome());
        }
        listBatalha.add(batalha);