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