首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从JSON响应片段中的对象中获取数据

如何从JSON响应片段中的对象中获取数据
EN

Stack Overflow用户
提问于 2019-07-26 12:45:11
回答 1查看 121关注 0票数 0

如何在用Fragment或xml改造安卓系统时从GET方法中获取“描述”,以及改造界面和改造客户端,全部代码实际上我已经遇到了一些问题。

我试了一段时间,但我不能修复这个API

JSON响应。

代码语言:javascript
复制
{
    "statuscode": 200,
    "status": "true",
    "cmsDetails": {
        "id": 2,
        "title": "Privacy Policy",
        "description": "<p>We, Devoid Technologies Pvt. Ltd., incorporated."
     }
}

改装接口

代码语言:javascript
复制
@GET("retrieve/policy")
Call<CMSDetails> getDescription();

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

EN

回答 1

Stack Overflow用户

发布于 2019-07-26 13:19:13

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

代码语言:javascript
复制
public class CMS
{
    @SerializedName("statuscode")
    private String statuscode;

    @SerializedName("status")
    private String status;

    @SerializedName("cmsDetails")
    private CmsDetails cmsDetails;

    public CmsDetails getCmsDetails()
    {   
        return cmsDetails;
    }
}

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

代码语言:javascript
复制
public class CmsDetails
{
    @SerializedName("id")
    private int id;

    @SerializedName("title")
    private String title;

    @SerializedName("description")
    private String description;

    public String getDescription()
    {
        return description;
    }
}

现在创建端点,如下所示:

代码语言:javascript
复制
public interface EndPoints {
    @GET("retrieve/policy")
    Call<CMS> getDescriptionCms();
}

现在创建客户端,如下所示:

代码语言:javascript
复制
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;

    }
}

现在,您可以进行呼叫改进呼叫,并获得如下描述:

代码语言:javascript
复制
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) {
        }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57213321

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档