[英]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.