从 retrofit2 响应中获取 JSONObject

Posted

技术标签:

【中文标题】从 retrofit2 响应中获取 JSONObject【英文标题】:Get JSONObject from retrofit2 response 【发布时间】:2017-10-13 23:00:48 【问题描述】:

如何从响应对象中获取retrofit2未知的JSON对象,如这个请求(使用OkHttp3):

Observable<Response<MyResponseObject>> apiCall(@Body body);

MyResponseObject 如下所示:

public class MyResponseObject 

    @SerializedName("title")
    public String title;

    @SerializedName("info")
    public JSONObject info;

    @SerializedName("question_id")
    public String questionId;

   

我想得到

JSON 对象信息

像一个普通的对象。

【问题讨论】:

【参考方案1】:

您需要创建另一个类(信息):

public static class Info 

    @SerializedName("description")
    public String mDescription;
    @SerializedName("preview_image")
    public String mPreviewImage;


在 MyResponseObject 中:

@SerializedName("info")
public Info info;

【讨论】:

但我不知道 JSONObject 长什么样子【参考方案2】:

我不知道JSONObject,但你可以试试Observable&lt;Response&lt;JsonElement&gt;&gt;,它有类似的API。

我认为应该将您的 Json 反序列化为 JsonElement 对象

如果您只需要json字符串,也可以调用Response.body()Response.errorBody()

【讨论】:

谢谢罗伯特! @RobertEstivill

以上是关于从 retrofit2 响应中获取 JSONObject的主要内容,如果未能解决你的问题,请参考以下文章

使用Retrofit2调用GET时获取Null对象作为响应

Retrofit2 POST 方法获取代码 400 但适用于 Restlet 客户端

如何从 Retrofit2 获得字符串响应?

改造 2:从响应正文中获取 JSON

Retrofit2:如何在具有不同字段名称的对象中接收 JSON 响应?

Android-Rxjava+Retrofit2.x 获取Http状态码响应头(Headers)等数据