Retrofit 2 的定制转换器

2023-12-14

我必须处理动态 JSON 响应。

之前,我使用类和注释如下:

public class ChatResponse {

    @SerializedName("status")
    private int status;

    @SerializedName("error")
    private String error;

    @SerializedName("response")
    private Talk response;

    public int getStatus() {
        return status;
    }

    public String getError() {
        return error;
    }

    public Talk getResponse() {
        return response;
    }
}

当状态为 1(成功)时onResponse被解雇,我可以获得一个 ChatResponse 对象。但是,当状态为 0 时,JSON 表示中的响应为 false,并且失败(onFailure被解雇)。

我想创建我的自定义转换器,并且这个问题有一个很好的例子,但这个例子是针对 Retrofit 1 的。

我必须创建一个扩展类Converter.Factory,但我不知道如何重写这个类的方法。

其实我有下一个:

@Override
public Converter<ResponseBody, ?> fromResponseBody(Type type, Annotation[] annotations) {

    return super.fromResponseBody(type, annotations);
}

@Override
public Converter<?, RequestBody> toRequestBody(Type type, Annotation[] annotations) {

    return super.toRequestBody(type, annotations);
}

此时我如何自己解析 JSON 响应?

提前致谢。


我正在寻找一个关于如何为 Retrofit 2 实现自定义转换器的简单示例。不幸的是没有找到。

I found 这个例子但是,至少对我来说,这对于我的目的来说太复杂了。

幸运的是,我找到了解决方案。

这个解决方案是使用GSON deserializers.

我们不需要创建自定义转换器,我们只需自定义GSON converter.

这里有一个很棒的tutorial。这是我用来解析我的问题中描述的 JSON 的代码:

  • 登录解串器:定义如何将 JSON 解析为目标类的对象(使用条件和我们需要的任何内容)。

  • 定制GSON转换器:构建一个使用我们自定义解串器的 GSON 转换器。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Retrofit 2 的定制转换器 的相关文章

随机推荐

  • 根据条件创建新的 numpy 数组

    我有 2 个 numpy 数组 aa np random rand 5 5 bb np random rand 5 5 当aa和bb都超过0 5时 如何创建一个值为1的新数组 由于关注性能并使用两种方法 因此可以添加一些方法 一种方法是获取
  • 无法导入pygame

    我已经在我的 Mac 上安装了 pygames 使用 pygame org 站点上找到的以下软件包中的安装程序 pygame 1 9 1release python org 32bit py2 7 macosx10 3 dmg 我已经使用
  • 访问 asp.虚拟机外部的.net开发服务器

    伙计们 我已经用头撞桌子 而不是电脑 好几个小时了 我在并行虚拟机中运行 VS 2008 如果使用本地主机 我可以访问虚拟机中的开发服务器 如果我使用虚拟机的指定IP或尝试从外部访问它 则不起作用 所有防火墙均已关闭 并且我验证可以从外部访
  • 如何在uiimage中绘制文本?

    我想设置我的文字Sold Out到 UIimage 的中心 但它不在中心 func textToImage drawText text NSString inImage image UIImage atPoint point CGPoint
  • SQLite 尝试选择时出现异常,没有这样的列

    我有以下数据库助手类 public int studentExists String studid Cursor dataCount mDb rawQuery select count from usertable where KEY ST
  • 使用默认内容初始化tinyMCE

    我有一个简单的问题tinyMCE 我有一个文本区域 其中id mainbuffer 以及函数tinyMCE get id setContent data 仅在被调用时有效onclick function 来自链接 并且在加载页面时不起作用
  • ListView拖放,错误“IndexOutOfBoundsException:索引-1超出长度4的范围”

    我正在为 ListView 实现拖放系统 我从这段代码中得到了灵感 https gist github com jewelsea 7821196 这就是我所做的 package com example ratatouille23 View
  • PHP四舍五入,圆/天花板/地板?

    假设我有以下两个数字 a 77 5 b 74 5 我如何得到以下内容 a 80 b 70 我看过圆形 天花板和地板 但我不知道该怎么做 谢谢 PHP 支持负精度round功能 a round a 1 这与写作几乎相同 a round a 1
  • 如何在 python 中编写自定义编码来清理数据?

    我知道我以前在另一份工作中做过这样的事 但我不记得我做了什么 我有一个数据库 里面充满了 varchar 和 memo 字段 这些字段是从 Office 网页以及谁知道其他地方剪切和粘贴的 这开始给我带来编码错误 由于 Python 有一个
  • IntersectionObserver 和位置:绝对

    当观察到的元素有时 IntersectionObserver 似乎不起作用position absolute并且根不是 视口 我在这里错过了什么吗 尝试删除position absolute查看预期结果 let intersectionRo
  • python 可以处理未计算的表达式参数吗?

    我想将一条语句传递给 python 函数 该语句只应在我在函数中执行其他操作后执行 默认情况下 python 计算语句 然后将其结果作为参数传递 有什么办法可以改变这种行为吗 我发现的唯一方法是将语句包装在函数中 然后传递该函数 大多数 P
  • 如何将 LinearGradient 添加到垂直 SVG 线[重复]

    这个问题在这里已经有答案了 我正在尝试为线条的笔划添加渐变 该线条在顶部淡出 但没有运气 实际上 我的工作原理是这样的 但即使在 Chrome 中 某些 SVG 尺寸也会出现浏览器问题 其中渐变会中断并且是固定的
  • MacOS X 10.6.2 上的 Perl:GDBM_File 丢失,如何安装或解决?

    当我需要 Perl 模块时 我通常使用 CPAN 效果很好 但这次不是 我想使用MARC Charset 但是这个使用GDBM File 而且我似乎无法从CPAN安装GDBM File CPAN 发现一切正常 但尝试安装它时 它开始安装完整
  • 为什么 useState 会让组件渲染两次?

    也许你们中的一些人可以让我睁开眼睛 我不明白为什么在这段代码中 https codesandbox io s use state renders twice 6r1xl组件 App 在安装并单击按钮时渲染两次 console log 被调用
  • Qt 中的自定义圆形进度条[关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我可以在覆盖时在 qt 中执行循环进度条paintEvent小部件并绘制圆形进度条 但在主圆形进度条后面的第二个圆形进度条 无法像这样绘制 有困难 有人可以指导我吗 预先感谢 我
  • 如何使用R中的“bootstrap函数”计算置信区间

    我正在尝试计算R中的置信区间 由于一些特殊原因 我必须使用 bootstrap 包中的函数来计算 这意味着我不能使用 boot 包中的函数 这是我的代码 我正在做的是尝试计算 Pearson 相关系数 然后应用 Bootstrap 方法 B
  • awk 不匹配所有匹配我的所有条目

    我正在尝试制作 脚本 本质上是一个 awk 命令 来提取 c 文件中 C 代码函数的原型 以自动生成标头 h 我是 awk 的新手 所以我不了解所有细节 这是源 c 的示例 dict t dictup dict t d const char
  • Jetty:如何在 Jetty 客户端使用 SSL

    我正在使用 Jetty 开发我的客户端应用程序端 我没有在服务器部分使用 Jetty 我需要在客户端配置什么才能使用 Jetty 客户端发送 https 请求 这就是我对 HTTP 客户端所做的事情 httpClient new HttpC
  • JsonConvert.DeserializeObject 特殊字符 未终止的字符串。预期分隔符:

    由于某种原因 当我的淘汰模型中有一个特殊字符并将其转换为 json 对象时 字符串在特殊字符应该在的位置结束 并且在反序列化时出现错误 ajax url Admin Forms Convert type post contentType a
  • Retrofit 2 的定制转换器

    我必须处理动态 JSON 响应 之前 我使用类和注释如下 public class ChatResponse SerializedName status private int status SerializedName error pri