如何使用Android的Retrofit获取JSON对象

时间:2017-07-07 17:27:28

标签: android django-rest-framework retrofit2

我正在使用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">

1 个答案:

答案 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

希望有所帮助!