【问题标题】:How to get data from object in JSON response in Fragment如何从片段中的 JSON 响应中的对象获取数据
【发布时间】:2019-12-04 09:39:05
【问题描述】:

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

我正在尝试一些时间,但我无法解决此问题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 对象中获取描述。

【问题讨论】:

  • “完整的代码实际上我遇到了一些问题”什么问题?
  • 显示你的CMSDetails

标签: java android json arraylist retrofit


【解决方案1】:

像这样为 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) {
        }
}

【讨论】:

  • 但这对 Fragment 也不起作用,如何在 Fragment 中使用请建议我。
猜你喜欢
  • 1970-01-01
  • 2020-11-14
  • 2017-04-22
  • 1970-01-01
  • 1970-01-01
  • 2013-08-07
  • 2018-06-21
  • 2016-08-30
  • 1970-01-01
相关资源
最近更新 更多