Android Gson Разбор класса со списком Поле - PullRequest
1 голос
/ 14 ноября 2011

Я определил следующий класс

 public class InfoSesionResponse  {

   EstadoRequest ESTADO;
   List<InfoSesion> infosesion=new ArrayList<InfoSesion>();

 }

И EstadoRequest, и InfoSesion являются простыми классами с только строковыми полями.

EstadoRequest имеет строковые поля CODIGO и DESCRIPCION. InfoSesion имеет строковые поля USUARIO, CENTRO и CODIGO.

Я получаю следующий ответ JSon

 {
     "ESTADO":{"CODIGO":"C","DESCRIPCION":"Todo bien"},
     "RESULTADO":[
            {"USUARIO":"Silveira Garc\u00eda, Francisco","CENTRO":"I.E.S. N\u00e9stor     
              Almendros","C_CODIGO":"41701183"}]}

Я пытаюсь десереализовать все сразу, но я не нашел пути

Я знаю, что для десериализации 'List<InfoSesion> infosesion=new ArrayList<InfoSesion>()' Я должен указать правильный параметризованный тип ...

Type infosesionlistype= new TypeToken<List<InfoSesionResponse>>() {}.getType();
InfoSesionResponse infosesionresponse=gson.fromJson(jsonInfoSesion, infosesionlistype);

Но я забыл другое поле, ЭСТАДО

Могу ли я управлять обоими одновременно?

Заранее спасибо.

1 Ответ

0 голосов
/ 15 ноября 2011

Могу ли я управлять обоими одновременно?

Да.

Чтобы создать структуру данных Java, соответствующую структуре JSON, я бы просто тщательно прошел черезJSON с самого начала, идентифицируя различные части и определяя дополнения в Java.

{                                                     // start object definition
    "ESTADO":                                         //   add reference of following type
    {                                                 //     start object definition
        "CODIGO": "C",                                //       add reference of type String or an enum
        "DESCRIPCION": "Todo bien"                    //       add reference of type String
    },                                                //     end object definition
    "RESULTADO": 
    [                                                 //   add reference to list or array of the following type
        {                                             //     start object definition
            "USUARIO": "Silveira García, Francisco",  //       add String reference
            "CENTRO": "I.E.S. Néstor Almendros",      //       add String reference
            "C_CODIGO": "41701183"                    //       add String or number reference
        }                                             //     end object definition
    ]
}                                                     // end object definition

Шаг за шагом превращая комментарии в код:

// start object definition

class Response
{

}

// start object definition
//   add reference of following type
//     start object definition

class Response
{
  State ESTADO;
}

class State
{

}

// start object definition
//   add reference of following type
//     start object definition
//       add reference of type String or an enum
//       add reference of type String
//     end object definition

class Response
{
  State ESTADO;
}

class State
{
  String CODIGO;
  String DESCRIPCION;
}

// start object definition
//   add reference of following type
//     start object definition
//       add reference of type String or an enum
//       add reference of type String
//     end object definition
//   add reference to list or array of the following type
//     start object definition

class Response
{
  State ESTADO;
  List<Result> RESULTADO;
}

class Result
{

}

class State
{
  String CODIGO;
  String DESCRIPCION;
}

// start object definition
//   add reference of following type
//     start object definition
//       add reference of type String or an enum
//       add reference of type String
//     end object definition
//   add reference to list or array of the following type
//     start object definition
//       add String reference
//       add String reference
//       add String or number reference
//     end object definition
// end object definition

class Response
{
  State ESTADO;
  List<Result> RESULTADO;
}

class Result
{
  String USUARIO;
  String CENTRO;
  String C_CODIGO;
}

class State
{
  String CODIGO;
  String DESCRIPCION;
}

Код в действии:

import java.io.FileReader;
import java.util.List;

import com.google.gson.Gson;

public class GsonFoo
{
  public static void main(String[] args) throws Exception
  {
    Gson gson = new Gson();
    Response response = gson.fromJson(new FileReader("input.json"), Response.class);
    System.out.println(gson.toJson(response));
  }
}

class Response
{
  State ESTADO;
  List<Result> RESULTADO;
}

class Result
{
  String USUARIO;
  String CENTRO;
  String C_CODIGO;
}

class State
{
  String CODIGO;
  String DESCRIPCION;
}
...