第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

我想從使用 Retrofit2 獲得的 json 數(shù)組中獲取特定對象的列表。我該怎么做呢?

我想從使用 Retrofit2 獲得的 json 數(shù)組中獲取特定對象的列表。我該怎么做呢?

月關(guān)寶盒 2023-02-23 17:40:33
Json 結(jié)構(gòu) PS 引用不是動(dòng)態(tài)的,所以只有一個(gè) JSON 數(shù)據(jù)數(shù)組;我在文檔上做了所有事情,但我只收到一個(gè)數(shù)組,我無法從中獲取單獨(dú)元素的列表,例如該數(shù)組中的坐標(biāo)主要活動(dòng)類:@Overridepublic void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    Service.getInstance()            .getJSONApi()            .loadList()            .enqueue(new Callback<List<Pandomats>>() {                @Override                public void onResponse(Call<List<Pandomats>> call, Response<List<Pandomats>> response) {                    pandomats.addAll(response.body());                    Log.v("ListPandomats", String.valueOf(pandomats.size()));                }                @Override                public void onFailure(Call<List<Pandomats>> call, Throwable t) {                }            });Service.java :public class Service {private static final Service ourInstance = new Service();private static final String BASE_URL = "http://myurl";private Retrofit mRetrofit;public static Service getInstance() {    return ourInstance;}private Service() {    mRetrofit = new Retrofit.Builder()            .baseUrl(BASE_URL)            .addConverterFactory(GsonConverterFactory.create())            .build();}public JsonPlaceApi getJSONApi() {    return mRetrofit.create(JsonPlaceApi.class);}}JsonPlaceApi.java :public interface JsonPlaceApi {@GET("/api/device/get/")Call<List<Pandomats>> loadList();}我需要用 getModel 填充我的列表,例如如何實(shí)現(xiàn)它或哪里有錯(cuò)誤?
查看完整描述

1 回答

?
慕少森

TA貢獻(xiàn)2019條經(jīng)驗(yàn) 獲得超9個(gè)贊

通過查看您在問題中發(fā)布的示例 JSON 數(shù)據(jù)格式,我認(rèn)為 API 不會(huì)返回 JSONArray,而是返回JSONObject。不管怎樣,我將告訴您如何從已解析的對象(無論是 JSONArray 還是 JSONObject)中獲取所需的數(shù)據(jù)。


您幾乎接近您正在尋找的解決方案。只需將下面的代碼粘貼到onResponse()方法中即可。


@Override

public void onResponse(Call<List<Pandomats>> call, Response<List<Pandomats>> response) {

     pandomats.addAll(response.body());

     Log.v("ListPandomats", String.valueOf(pandomats.size()));


     for (int i = 0; i < pandomats.size(); i++) {

         Pandomats p = pandomats.get(i);


         Log.v("ListPandomats", p.getModel());   // prints model

         Log.v("ListPandomats", String.valueOf(p.getLatitude()));   // prints latitude

     }

}

像上面一樣,您可以從Pandomats類中獲取任何對象。確保pandomats在聲明時(shí)或在onResponse()方法內(nèi)部使用它之前已初始化 ArrayList。否則你最終會(huì)得到NullPointerException.


并且不要忘記在onFailure()方法內(nèi)部記錄來自 API 的錯(cuò)誤響應(yīng)。這很重要。


@Override

public void onFailure(Call<List<Pandomats>> call, Throwable t) {

    Log.e("ListPandomats", "Error" t);

}

正如我之前所說,我認(rèn)為 API 不會(huì)返回 JSONArray,而是重新運(yùn)行 JSONObject。如果它返回 JSONObject,則需要像下面這樣更改代碼。


JSONApi.java


public interface JsonPlaceApi {

    @GET("/api/device/get/")

    Call<Pandomats> loadList();  // remove List<> from return type 

}

MainActivity.java


Service.getInstance()

    .getJSONApi()

    .loadList()

    .enqueue(new Callback<Pandomats>() {  /* remove List<> */


        @Override

        public void onResponse(Call<Pandomats> call, /* remove List<> */ Response<List<Pandomats>> response) {

            Pandomats p = response.body();


            // without for loop iteration you can get the data

            Log.v("ListPandomats", p.getModel());   // prints model

            Log.v("ListPandomats", String.valueOf(p.getLatitude()));   // prints latitude

        }


        @Override

        public void onFailure(Call<Pandomats> call, Throwable t) { /* remove List<> */

            Log.e("ListPandomats", "Error" t);

        }

    });

我希望現(xiàn)在一切都清楚了。如果您遇到錯(cuò)誤,請先查看錯(cuò)誤日志。如果不明白,請編輯問題并發(fā)布錯(cuò)誤日志。


查看完整回答
反對 回復(fù) 2023-02-23
  • 1 回答
  • 0 關(guān)注
  • 126 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號