如何处理 Retrofit 2 中不同类型的响应

2024-02-15

在 Web Api 中返回 JSON 字段可以属于不同的类:

{ someField:"some string" }
{ someField: { "en" : "some string", "ka" : "რამე სტრინგი" } }

我见过一些解决方案,但这是在以前版本的 Retrofit 上。

我的 pojo 类会是什么样子,我可以用什么来解析这个动态 json?


对于您的情况,您可以使用Call<JsonElement>作为响应类型并在响应中解析它:

call.enqueue(new Callback<JsonElement>() {
        @Override
        public void onResponse(Call<JsonElement> call, Response<JsonElement> response) {
            if(response.isSuccessful()){
                JsonElement jsonElement = response.body();
                if(jsonElement.isJsonObject()){
                    JsonObject objectWhichYouNeed = jsonElement.getAsJsonObject();
                } 
                // or you can use jsonElement.getAsJsonArray() method
                //use any json deserializer to convert to your class.
            }
            else{
                System.out.println(response.message());
            }
        }
        @Override
        public void onFailure(Call<JsonElement> call, Throwable t) {
            System.out.println("Failed");
        }
    });
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何处理 Retrofit 2 中不同类型的响应 的相关文章

  • 与其他图标相比,AppCompat ShareActionProvider 图标太大

    我将 ActionBarSherlock 更改为 AppCompat v7 我已经完成了使其工作所需的所有更改 但是共享图标 使用 ShareActionProvider 发生了一些奇怪的情况 与其他图标相比 共享图标太大 我还使用支持库进
  • 键绑定 - 鼠标中键与 Sublime Text 2

    有谁知道是否可以将鼠标中键绑定到 Sublime Text 2 中的操作 我知道可以进行一些鼠标交互 因为您可以使用后退和前进按钮 基本上 我将使用此按钮通过 sFTP 插件上传文件 这样我需要按下的按钮数量就会从 3 个减少到 1 个 目
  • Android 自定义视图不能以正确的方式处理透明度/alpha

    我正在绘制自定义视图 在此视图中 我使用两个不同的绘画和路径对象在画布上绘画 我基本上是在绘制两个重叠的形状 添加 Alpha 后 视图中重叠的部分比图像的其余部分更暗 这是不希望的 但我不知道如何解决它 这是我的代码片段 用于展示我如何在
  • 无法将数据加载到 mvc 4 中的 jTable 中

    好的 我第一次尝试 jTable 我可以加载表 但这对我没有什么好处 因为它不会加载我的任何数据 当我调试程序时 我想要的表中的所有行都存储在我的列表中 因此我很困惑为什么当我运行应用程序时会弹出一个对话框 显示 与服务器通信时发生错误 H
  • 通过标识引用对象的标准方法(例如循环引用)?

    JSON 中是否有通过身份引用对象的标准方法 例如 具有大量 可能是循环 引用的图形和其他数据结构可以被合理地序列化 加载吗 Edit 我知道做一次性解决方案很容易 列出图中所有节点的列表 然后 我想知道是否有一个标准的 通用的解决方案来解
  • 应用内结算错误

    我的 UNMANAGED 应用内购买无法正常工作 在它完美运行之前 我可以使用测试帐户成功购买 但它突然不起作用了 因为我记得我对商家帐户所做的只是添加更多 2 4 个测试帐户 添加后 我的应用内购买将不起作用 所以我更新了公钥并上传了一个
  • finish() 完成活动但它仍然在后台

    我有一个关于 android studio 中活动的 finish 方法的问题 我有这个简单的代码 public class MainActivity extends AppCompatActivity Override protected
  • 如何使用 Firebase UI 在 recyclerView 中显示时从 Firebase 数据库中的子级引用父级

    我目前正在引用 quote text 子项 这些数据显示在recyclerview using firebase用户界面 我想获取 quote text 的父名称 如何获取 quote text 孩子的父母姓名 When user clic
  • 导航抽屉默认片段

    我是一名新手开发人员 我正在将导航抽屉与 android support v7 集成到我的应用程序中 我有一个问题 当我启动应用程序时 主要布局是这样的
  • jq中如何分组?

    这是 json 文档 name bucket1 clusterName cluster1 name bucket2 clusterName cluster1 name bucket3 clusterName cluster2 name bu
  • 在 Jetpack Compose 中跨可组合函数重复使用一组预览注释

    在 Jetpack Compose 中迈出第一步 这非常令人惊奇 除了一个恼人的问题 我有一组固定的预览 正常 深色和 RTL Preview name Normal group Screen showBackground true Pre
  • JavaDoc 在 Android 项目中不起作用

    我在 Ubuntu 10 04 上使用 Eclipse 3 5 2 进行 Android 开发 我安装了 来自 Ubuntu 存储库的 Sun JDK Eclipse 3 5 2 经典 来自 eclipse org 解压到 opt ecli
  • JSON 数组到 C# 列表

    如何将这个简单的 JSON 字符串反序列化为 C 中的列表 on4ThnU7 n71YZYVKD CVfSpM2W 10kQotV 这样 List
  • Android - 如何更改 TimePicker 中的文本颜色?

    我正在使用 TimePicker 到 LinearLayout 中 背景颜色 黑色 但是 我看不到 TimePicker 中的数字 并且我需要在布局中将背景颜色设置为黑色 如何更改 TimePicker 中的 textColor 我已经尝试
  • Espresso 和 Proguard 的 Java.lang.NoClassDefFoundError

    我对 Espresso 不太有经验 但我终于成功地运行了它 我有一个应用程序需要通过 Proguard 缩小才能处于 56K 方法之下 该应用程序以 3 秒的动画开始 因此我需要等到该动画结束才能继续 这就是我尝试用该方法做的事情waitF
  • 在Android Studio中更改项目主题?

    我使用浅色主题创建了一些项目 现在我想将其更改为深色 但我不知道该怎么做 顺便说一句 我不是问如何在代码中做到这一点 只是问如何更改项目的默认主题 在 AndroidManifest xml 的 application 标签下 您可以设置您
  • 将图像添加到自定义 AlertDialog

    我制作了一个 AlertDialog 让用户可以从我显示的 4 个选项中选择一个 前 3 个让他们在单击号码时直接拨打号码 第 4 个显示不同的视图 现在看起来是这样的 由于第四个选项的目的是不同的任务 我想让它看起来不同 因为用户可能会感
  • 按字母顺序过滤 Firestore 数据以对 Google Cloud 中的文档读取进行分类/减少

    基于这样的事实Cloud Firestore 不支持全文搜索 https firebase google com docs firestore solutions search到目前为止 我决定问这个question https stack
  • Android 自定义警报对话框中的 OnClickListener

    我是一个自学成才的初学者 感谢耐心 谢谢 在 Eclipse 中 我使用自己的 xml 文件 custom dialog 创建了一个自定义警报对话框 称为 usernamealert 如果用户尚未输入用户名 即 username lengt
  • 当ScrollView滚动到底部时加载更多数据

    我有一个带有动态加载内容的滚动视图 有时可能会有很多内容 所以我想在用户滚动到底部时加载更多内容 我搜索了合适的方法 发现了两种 onScrollChanged and getScrollY 但我不知道如何将它用于我的目的 请给我一些建议

随机推荐

  • 在生产 Java 服务器中打开 GC 日志记录是常见做法吗?

    我在一些地方 1 看到人们在生产服务器 关键任务 中启动 GC 日志记录 例如 java server Xms1024m Xmx1024m XX NewSize 256m XX MaxNewSize 256m XX UseConcMarkS
  • 当我点击它们时如何更改圆半径(使用 Three.js)?

    我有以下 JavaScript 代码 取自一个示例 它绘制了一些圆圈 当您单击其中一个圆圈时 它会改变颜色 但我还想在单击该圆圈时更改该圆圈的半径 大小 并保持其他圆圈不变 这文档 https threejs org docs index
  • 如何解码 HTML 实体?

    这是一个 Perl 快速问题 如何转换 HTML 特殊字符 例如 uuml or 039 转换为普通 ASCII 文本 我从这样的事情开始 s d chr 1 eg 并且可以为所有 HTML 字符编写它 但是像这样的函数可能已经存在 请注意
  • 在按下和释放鼠标时绘制矩形,opengl

    我试图根据用户输入绘制一个矩形 该矩形从左键单击收集 x1 y1 坐标 然后从左键单击的释放指定 x2 y2 我成功保存了基于此鼠标操作的坐标 基于确认保存坐标的 cout 这是我尝试过的 请记住 没有任何崩溃 因此存在逻辑错误 void
  • 如何使用 Factorplot 用分类值注释条形或绘制 4 个变量?

    我有一个要绘制的数据框 我想到了两个选择 检查图像 对于选项 1 我需要注释一个分类值 Elec 对于选项 2 我仍然需要使用 factorplot 但我不知道如何修复收到的错误 CODE FOR THE DATAFRAME raw dat
  • Bootstrap 4 有内置水平分隔线吗?

    Bootstrap 4 有内置水平分隔线吗 我可以做这个 但我想使用内置的 bootstrap css 我在文档中找不到它 也许我错过了它 HTML 已经有一个内置的水平分隔符 称为 hr 水平规则 的缩写 Bootstrap 风格像这样
  • 哪些方法可以访问源代码?

    有多种方法可以从需要 加载该库的 Ruby 代码中访问该库的源代码 其中 有的直接读取库文件并解析 其他人通过一些内置方法访问源代码 这些方法提供有关源代码的信息 例如抽象语法树 在我无法直接读取文件内容的情况下 如前面的方式 访问源的唯一
  • 如何使用公共类上的静态变量在活动之间传递数据?

    我试图在公共类上使用静态变量来在活动之间传递它们 我在这样做时遇到了一个罕见的问题 我正在为活动的静态变量赋予值 此活动调用 GLSurfaceView 并监听屏幕方向的变化 如果我为 GLSurfaceView 上的静态变量赋予值 那么一
  • iOS 如何保存录制的音频?

    我正在开发一个应用程序 其中音频被录制并转录为文本 我正在使用 Nuance Developers 提供的 Speechkit 我要添加的功能是 将录制的音频文件保存到永久内存 在表格视图中显示音频文件 稍后加载保存的音频文件 播放音频文件
  • 从 MPEG TS 中提取 PCR 时间值

    我正在尝试从 MPEG TS 数据包中提取 PCR 时间值 根据wiki http en wikipedia org wiki MPEG transport stream PCR 包含 33 6 9 位 并且还指出前 33 位基于 90 k
  • 将文件插入 Google Drive 时出现 IOException

    我在将图像发布到 Google 云端硬盘时遇到以下问题 java io IOException insufficient data written at sun net www protocol http HttpURLConnection
  • locationManager didUpdateLocations 在设备上触发两次,在模拟器上仅触发一次

    相同的代码 我假设设备实际上由于某种原因更新了位置两次 即使我只调用 startUpdatingLocation 一次并且在 didUpdateLocations 内部运行一些 stopUpdatingLocations func loca
  • 如何在 Android Jetpack Compose 中使用字符串资源?

    让我有以下内容strings xml资源文件
  • python中uuid4和秘密token_bytes有什么区别?

    检查了两者的cpython源代码secrets https github com python cpython blob master Lib secrets py and uuid4 https github com python cpy
  • 使用 function-java 向 Java 生产项目添加闭包有多安全?

    我很想在 Java 中使用闭包 我读到过 它们可能会也可能不会进入 Java 7 但是有一个名为函数式java http code google com p functionaljava 已经实现了包括闭包在内的功能特性 在企业生产应用程序
  • 在 group_by() %>% mutate() 函数调用中使用带引号的变量

    可重现的例子 cats lt data frame name c letters 1 10 weight c rnorm 5 10 1 rnorm 5 20 3 type c rep not fat 5 rep fat 5 get mean
  • 在 Elixir 中测试异步代码

    我想测试一个正在使用的函数Task async 为了让我的测试通过 我需要让它在断言之前休眠 100 毫秒 否则测试进程会在执行异步任务之前被终止 有没有更好的办法 编辑 添加代码示例 我想测试的代码 大致 def search param
  • 设置新行Datagrid的内容

    我有一个 DataGrid 显示一些具有相当多列的数据库 我希望当用户编辑新行时 会自动设置一些值 对于窗口形式的 DataGrid 这会很容易 因为有 RowsAdded 事件处理程序 但我如何用 wpf DataGrid 处理这个问题
  • SQL Server 触发器从视图添加/更新表

    我有一个表 我想在将新行添加到视图时添加 更新该表 但我正在努力完成这项工作 我的目标表是课程学习者进度 我的观点是Quiz Results For Course Learner Progress 我已经从记录测验分数的表创建了视图 并由
  • 如何处理 Retrofit 2 中不同类型的响应

    在 Web Api 中返回 JSON 字段可以属于不同的类 someField some string someField en some string ka 我见过一些解决方案 但这是在以前版本的 Retrofit 上 我的 pojo 类