我正在使用Android和DRF,现在正在改造。
我正在尝试使用Retrofit获取Django模型,它返回JSON响应。
但在我的模型中,有多个JSON对象。
例如,
请求网址是[object1的网址]
和
响应= { object2:[object2的url], 其他一些数据 }
如何使用Retrofit将object2更改为json对象?
修改
我使用多个AsyncTask解决了这个问题。 获取Object1和object2的url,并在onPostExecute中创建一些新的AsyncTask,通过Retrofit获取Object2,检查Object2的url和Object2的列表参数'url'并匹配。 例如,
<input type="text" id="dividend">
/
<input type="text" id="divisor"> <!-- <input> elements don't need a closing tag! -->
=
<input type="text" id="result">
答案 0 :(得分:0)
我建议您接收原始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
希望有所帮助!