我有一个包含一些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;
答案 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);