簡體   English   中英

如何使用Android的Retrofit獲取JSON對象

[英]How to get JSON Object using Retrofit for Android

我正在使用Android和DRF,現在進行改裝。

我正在嘗試使用Retrofit獲得Django模型,它返回JSON響應。

但是在我的模型中,有多個JSON對象。

例如,

請求網址是[object1的網址]

響應= {object2:[object2的url],其他一些數據}

如何使用翻新將object2更改為json對象?


編輯

我使用多個AsyncTask解決了這個問題。 獲取Object1和object2的url,然后在onPostExecute中創建一些新的AsyncTask,通過Retrofit獲取Object2,檢查Object2的url和Object2的列表參數“ url”並進行匹配。 例如,

AsyncTask() {
  doInBackground() {
    get object1List
  }
  onPostExecute(object1List) {
    AsyncTask2() {
      doInBackground() {
        get object2List
        for (object1 : object1List)
          object2ListItem & object1.url match
      }
      onPostExecute() {
        something to do
      }
    }
  }
}

我建議您接收原始的JSON,然后使用GSON進行解析

private static Retrofit retrofit = null;
private static Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().setLenient().create();

public static Retrofit getClient(String baseUrl) {
        if (retrofit==null) {
            retrofit = new Retrofit.Builder()
                    .baseUrl(baseUrl)
                    .addConverterFactory(GsonConverterFactory.create(gson)) 
                    .client(httpClient.build())
                    .build();
        }
        return retrofit;
    }

並創建一個獲得預期信息示例的類

public class People{
    @Expose
    private String Name;
    @Expose
    private Int Age;
    @Expose
    private String Surname;

// setters and getters...

api接口

public interface APIService {
 @POST("people.php")
    Call<whatyoureceive> response();

}

private static final String BASE_URL = "YOUR URL";

public static APIService getAPIService() {

    return RetrofitClient.getClient(BASE_URL).create(APIService.class);
}

在您的活動中

private APIService mAPIService;

mAPIService = ApiUtils.getAPIService();



public void sendRequest() {
        mAPIService.responseo().enqueue(new Callback<PlanDetails>() {
@Override
            public void onResponse(......) {
// what you want to do
}
@Override
            public void onFailure(.....) {
// what you want to do
}

更多信息https://futurestud.io/tutorials/retrofit-getting-started-and-android-client

希望對您有所幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM