android – Retrofit:处理动态更改其名称的JSON对象

android – Retrofit:处理动态更改其名称的JSON对象,第1张

概述我用改造. 我有这样的JSON数据: {"elements": { "159": { "id": 159, "name": "Alex" }, "831": { "id": 831, "name": "Sofia" }, "3125": { "id": 3125 我用改造.

我有这样的JSON数据:

@H_502_4@{"elements": { "159": { "ID": 159,"name": "Alex" },"831": { "ID": 831,"name": "Sofia" },"3125": { "ID": 3125,"name": "Mark" } }}

无法在我这边配置此JsON的结构.

我想使用改造来处理这些对象(动态地改变它们的名字).

我现在就像那样.

模型:

@H_502_4@public class Elements{public ArrayList<ElementsItem> = new Array<ElementsItem>();//getters setterspublic class ElementsItem{ public ArrayList<ElementsItemDetails> = new Array<ElementsItemDetails>(); //getters setters}public class ElementItemDetails{ public Integer ID; public String name; //getters setters}}

API:

@H_502_4@public interface MyAPI {@GET("/file.PHP?method=getElementDetails")public voID getDetails(@query("IDs") ArrayList<Integer> IDs_List,Callback<Elements> callback);}

以及我尝试处理数据的函数:

@H_502_4@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); } });}

我尝试处理名称“Alex”并在LogCat中打印,但我不能 – 应用程序停止.我确信这个命令:

@H_502_4@e.getElementsItem().get(0).getElementsItemDetails().get(0).getname()

是错的,但我不知道如何处理名称值的任何其他方式.

当对象名称发生变化时如何表现(在这种情况下,有三个相似的对象被称为依赖于提供的IDs列表列表?这里:[156,831,3125]

请帮忙.

解决方法 作为动态生成ElementItemDetails的关键,您应该使用Map来表示结构.

在您的模型类Elements中:

更换

@H_502_4@public ArrayList<ElementsItem> = new Array<ElementsItem>();

@H_502_4@Map<String,ElementItemDetails> elemDetails;

希望这可以帮助.

总结

以上是内存溢出为你收集整理的android – Retrofit:处理动态更改其名称的JSON对象全部内容,希望文章能够帮你解决android – Retrofit:处理动态更改其名称的JSON对象所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1145268.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存