首页 > 解决方案 > 如何从片段中的 JSON 响应中的对象获取数据

问题描述

如何GET使用 Fragment 或xmlRetrofit 接口和改造客户端从改造 android 的方法中获取“描述”,完整代码实际上我遇到了一些问题。

我正在尝试一些时间,但我无法解决这个问题API

JSON 响应。

{
    "statuscode": 200,
    "status": "true",
    "cmsDetails": {
        "id": 2,
        "title": "Privacy Policy",
        "description": "<p>We, Devoid Technologies Pvt. Ltd., incorporated."
     }
}

改造接口

@GET("retrieve/policy")
Call<CMSDetails> getDescription();

我想在 cmsDetails 对象中获取描述。

标签: javaandroidjsonarraylistretrofit

解决方案


为 JSON 响应创建一个模型,如下所示:

public class CMS
{
    @SerializedName("statuscode")
    private String statuscode;

    @SerializedName("status")
    private String status;

    @SerializedName("cmsDetails")
    private CmsDetails cmsDetails;

    public CmsDetails getCmsDetails()
    {   
        return cmsDetails;
    }
}

现在为 CmsDetails 创建另一个模型:

public class CmsDetails
{
    @SerializedName("id")
    private int id;

    @SerializedName("title")
    private String title;

    @SerializedName("description")
    private String description;

    public String getDescription()
    {
        return description;
    }
}

现在像这样创建您的端点:

public interface EndPoints {
    @GET("retrieve/policy")
    Call<CMS> getDescriptionCms();
}

现在创建客户端如下:

public class RetroFitCMSClient { 
    private static Retrofit retrofit;
    private static OkHttpClient okClient;
    private static final String BASE_URL = "http://test.test;

    public static Retrofit getRetrofitInstance() {

        okClient = new OkHttpClient
                .Builder()
                .build();

        if (retrofit == null) {
            retrofit = new retrofit2.Retrofit.Builder()
                    .baseUrl(BASE_URL)
                    .client(okClient)
                    .addConverterFactory(GsonConverterFactory.create())
                    .build();
        }
        return retrofit;

    }
}

现在您可以拨打电话改装电话并获得如下描述:

EndPoints service = RetroFitCMSClient.getRetrofitInstance().create(EndPoints.class);
call = service.getDescriptionCms();
call.enqueue(new Callback<CMS>() {
        @Override
        public void onResponse(Call<CMS> call, Response<CMS> response) {              
            if(response.isSuccessful()) {
                String description = response.body().getCmsDetails().getDescription();
            }
        }
        @Override
        public void onFailure(Call<CMS> call, Throwable throwable) {
        }
}

推荐阅读