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

Posted

技术标签:

【中文标题】如何从片段中的 JSON 响应中的对象获取数据【英文标题】:How to get data from object in JSON response in Fragment 【发布时间】: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 【参考方案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 中使用请建议我。

以上是关于如何从片段中的 JSON 响应中的对象获取数据的主要内容,如果未能解决你的问题,请参考以下文章

如何检查获取的响应是不是是javascript中的json对象

无法从打字稿中的 json 对象获取数组响应

如何从选项卡片段中的 AsyncTask Resftful WS 加载批量数据

如何从 JSON 数组中的 JSON 对象中的单个值获取数据?

从片段中的json获取值

如何从 iOS 中的 JSON 响应中获取价值