Retrofit: Manipulando objeto JSON que altera dinamicamente seu nome

Eu uso retrofit.

Eu tenho dados JSON como este:

{
"elements": {
    "159": {
        "id": 159,
        "name": "Alex"
        },
    "831": {
        "id": 831,
        "name": "Sofia"
        },
    "3125": {
        "id": 3125,
        "name": "Mark"
       }
    }
}

A estrutura deste JSON não pode ser configurada do meu lado.

E eu quero lidar com esses objetos (que alteram dinamicamente seus nomes) usando o retrofit.

Eu tenho algo assim agora.

Modelo:

public class Elements{
public ArrayList<ElementsItem> = new Array<ElementsItem>();

//getters setters

public class ElementsItem{
    public ArrayList<ElementsItemDetails> = new Array<ElementsItemDetails>();

    //getters setters
}

public class ElementItemDetails{
    public Integer id;
    public String name;
    //getters setters
}}

API:

public interface MyApi {

@GET("/file.php?method=getElementDetails")
public void getDetails(@Query("ids") ArrayList<Integer> ids_list, Callback<Elements> callback);
}

E a função em que tento manipular dados:

public void get_details_for_particular_elements(ArrayList<Integer> ids_list){

    Gson gson_gd = new GsonBuilder().registerTypeAdapter(
            Elements.class,
            new JsonDeserializer<Elements>() {

                @Override
                public Elementsdeserialize(JsonElement je,
                        Type type, JsonDeserializationContext jdc)
                        throws JsonParseException {
                    // TODO Auto-generated method stub
                    Log.d("my_app", "Deserialization for Getting Elements Details in progress..");
                    JsonObject elements= je.getAsJsonObject();
                    return new Gson().fromJson(elements,
                            Elements.class);
                }

            }).create();

    RestAdapter restAdapter = new RestAdapter.Builder()
    .setEndpoint(Constants.URL)
    .setConverter(new GsonConverter(gson_gd)).build();


    MyApi myDetails = restAdapter.create(MyApi.class);

    myDetails.getDetails(ids_list, new Callback<Elements>() {

        @Override
        public void success(Elements e, Response response) {
            // TODO Auto-generated method stub

            Log.d("my_app", "Success! " + e.getElementsItem().get(0).getElementsItemDetails().get(0).getName());

        }

        @Override
        public void failure(RetrofitError retrofitError) {
            // TODO Auto-generated method stub
            Log.d("my_app", "Failure..." + retrofitError);
        }


    });
}

Tento manipular o nome "Alex" e imprimi-lo no LogCat, mas não consigo - o aplicativo para. Estou certo de que este comando:

e.getElementsItem().get(0).getElementsItemDetails().get(0).getName()

está errado, mas não conheço outra maneira de lidar com o valor do nome.

Como se comportar quando o nome do objeto é alterado (nesse caso, existem três objetos semelhantes chamados na dependência da lista de IDsids_list forneceu? Aqui: [156,831,3125]

Por favor ajude.

questionAnswers(1)

yourAnswerToTheQuestion