我使用改進。改造:處理動態更改其名稱的JSON對象
我JSON數據是這樣的:
{
"elements": {
"159": {
"id": 159,
"name": "Alex"
},
"831": {
"id": 831,
"name": "Sofia"
},
"3125": {
"id": 3125,
"name": "Mark"
}
}
}
這個JSON的結構不能在我的身邊來配置。
我想要使用翻新處理這些對象(即動態更改其名稱)。
我現在就這樣。
型號:
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);
}
而且在那裏我試圖處理功能數據:
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);
}
});
}
我試圖處理名爲 「亞歷克斯」 和打印它在LogCat中,但我不能 - 應用程序停止。我確信這個命令:
e.getElementsItem().get(0).getElementsItemDetails().get(0).getName()
是錯誤的,但我不知道任何其他方式如何處理名稱值。 ?
當對象名稱的變化(在這種情況下有三個叫這裏提供IDS ids_list
的名單Dependance的相似的對象如何表現:[156,831,3125]
請幫
你會得到什麼錯誤? 'new Callback'vs'Callback ' - 什麼是'ResponseObjectGetDetails'? –
William
2015-02-11 22:05:53
對不起@威廉這是一個錯誤。這意味着要回調, –
2015-02-12 08:23:57
你會得到什麼錯誤,究竟是什麼? – William 2015-02-12 18:56:09