如何使用OpenFeign获取pojo数组?

2023-12-02

我正在尝试使用 OpenFeign 客户端访问 API,获取一些 JSON,并将其转换为 POJO 数组。

以前我只是简单地获取一串 JSON 并使用 Gson 将其转换为数组,如下所示

FeignInterface {
    String get(Request req);
}
String json = feignClient.get(request);
POJO[] pojoArray = new Gson().fromJson(json, POJO[].class);

这很有效。我想消除额外的步骤并假装自动解码 JSON 并直接返回 POJO,所以我正在尝试这个

FeignInterface {
    POJO[] get(Request req);
}
POJO[] pojoArray = feignClient.getJsonPojo(request);`

我遇到了这个错误

feign.codec.DecodeException: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was STRING at line 1 column 2 path $

两种方法都使用相同的构建器

feignClient = Feign.builder()
     .encoder(new GsonEncoder())
     .decoder(new GsonDecoder())
     .target(FeignInterface.class, apiUrl);

有人有主意吗?


你已经坏了JSON有效负载。在序列化之前,您需要删除所有不支持的字符。Feign允许这样:

如果您需要在将响应提供给解码器之前对其进行预处理, 您可以使用mapAndDecode构建器方法。一个示例用例是 处理仅提供 jsonp 服务的 API,您可能需要 在将 jsonp 发送到您选择的 Json 解码器之前解开它:

public class Example {
  public static void main(String[] args) {
    JsonpApi jsonpApi = Feign.builder()
         .mapAndDecode((response, type) -> jsopUnwrap(response, type), new GsonDecoder())
         .target(FeignInterface.class, apiUrl);
  }
}

因此,您需要在配置中执行相同的操作:

  • trim响应并删除所有whitespaces在有效负载的开头和结尾。
  • 移除所有new_line字符如:\r\n, \r, \n

Use 在线工具确定你的JSON有效负载有效并准备好反序列化。

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

如何使用OpenFeign获取pojo数组? 的相关文章

  • ActiveRecord 嵌套 SELECT——我可以在没有手动 SQL 的情况下完成它吗?

    我有一张桌子 上面有 除其他外 一个名字和一个等级 我想返回所有唯一名称的集合 但对于返回的每个名称 我想选择排名最高的行 这很简单 有两个嵌套的 SELECT 语句 SELECT FROM SELECT FROM foo ORDER BY
  • 具有 CRUD 功能的基于 Spring Web 的管理工具

    在 PHP Symfony 世界里有一个工具叫 Sonata Adminhttps sonata project org https sonata project org 基于 AdminLTE 模板 这是一款一体化管理工具 具有登录 菜单
  • 将 jQuery 与 Selenium WebDriver 结合使用 - 如何将 JSON 对象转换为 WebElement?

    我正在使用 Selenium WebDriver 我想执行 jQuery 代码来查找一些元素 我的代码如下 public function uploadGrantDoc script return itemlist grant file u
  • Android WebView文件上传

    我正在开发一个 Android 应用程序 基本上它是一个WebView和一个进度条 Facebook 的移动网站 m facebook com 已加载到WebView 当我单击 选择文件 按钮上传图像时 没有任何反应 我已经尝试了所有的解决
  • 需要正则表达式帮助

    我正在尝试替换两次或多次出现的 br like br br br 标签与两个一起 br br 具有以下模式 Pattern brTagPattern Pattern compile lt s br s s gt s 2 Pattern CA
  • 在 Junit 测试中使用 ReflectionTestUtils.setField()

    我是 JUnittesting 的新手 所以我有一个问题 谁能告诉我为什么我们使用ReflectionTestUtils setField 在我们的 Junit 测试示例中 正如评论中提到的 java 文档很好地解释了用法 但我还想给你们举
  • Java - JPanel 内有边距和 JTextArea

    我想创建这样的东西 主面板有其边距 x 并且 TextArea 位于该面板的中心 几乎填满了面板 底部是另一个具有自定义尺寸 高度 y 的面板 可以使用某些快捷方式将其切换为可见和不可见 底部面板有 FlowLayout 和几个元素 问题是
  • Java 中的 ExecuteUpdate sql 语句不起作用

    我正在学习如何将 SQL 与 Java 结合使用 我已成功安装 JDBC 驱动程序 并且能够从数据库读取记录并将其打印在屏幕上 我的问题发生在尝试执行更新或插入语句时 没有任何反应 这是我的代码 问题所在的方法 public static
  • 查找数组中的组合

    我在java中有一个像这样的二维数组 transmission communication tv television approach memorycode methodact 我需要获得所有组合 例如 transmission appr
  • 更改 JComboBox 中滚动条的大小

    有谁知道如何手动更改 jComboBox 中的滚动条大小 我已经尝试了一大堆东西 但没有任何效果 好吧 我明白了 您可以实现 PopUpMenuListener 并使用它 public void popupMenuWillBecomeVis
  • 如何使用 swagger-codegen-plugin (maven) 生成客户端代码?

    我需要使用 swagger codegen plugin for maven 在 eclipse 中生成服务器存根代码 你能帮忙怎么做吗 以及需要什么配置 在 pom xml 中 我找到了这个答案 您只需要像下面这样更改 pom xml 即
  • 从 Android 访问云存储

    我一直无法找到任何有关如何从 Android 应用程序使用云存储的具体文档 我确实遇到过这个客户端库 https cloud google com storage docs reference libraries然而 Google Clou
  • 改变 Java 中凯撒移位的方向

    用户可以通过选择 1 向左或 2 向右移动字母来选择向左或向右移动 左边工作正常 右边不行 现在它显示了完全相同的循环 但我已经改变了所有 and 以不同的方式进行标记 最终我总是得到奇怪的字符 如何让程序将字符向相反方向移动 如果用户输入
  • 如何连接以逗号分隔的命名范围的返回值

    我花了几个小时试图找出如何连接命名范围中的返回值 但结果是 运行时错误 32 类型不匹配 作为一个新手 我仍在与数组作斗争 所以也许我忽略了一些细节 谢谢你帮助我 示例 B1 苯 B2 柴油 B3 混合动力 gt E1 汽油 E2 柴油 E
  • Java 中处理异步响应的设计模式

    我读过类似问答的答案 如何在 JAVA 中创建异步 HTTP 请求 https stackoverflow com questions 3142915 how do you create an asynchronous http reque
  • Java String ReplaceAll 方法给出非法重复错误?

    我有一个字符串 当我尝试运行时replaceAll方法 我收到这个奇怪的错误 String str something op str str replaceAll o n it works fine str str replaceAll n
  • jQuery 相当于 underscore.js 的 groupBy

    jQuery 中是否有一个内置函数可以执行相当于http underscorejs org groupBy http underscorejs org groupBy 有什么解决方法吗 Thanks 不 jQuery 不是为数据处理而设计的
  • Android Google 地图无法在当前主题中找到样式“mapViewStyle”

    添加谷歌地图视图时 我扩展了MapView 使用xml编辑器将其添加到活动中 并将我的谷歌地图api密钥手动添加到布局xml文件中 我的权限在清单文件中允许互联网 我想知道的是 在 xml 编辑器中 我收到错误 无法在当前主题中找到样式 m
  • 将数组值导出到 csv 文件 java

    我只需要帮助将数组元素导出到 csv 文件 我不知道我的代码有什么问题 任何帮助将不胜感激 谢谢 for int index 0 index lt cols length index FileWriter fw new FileWriter
  • 使用 numpy 加速 for 循环

    下一个 for 循环如何使用 numpy 获得加速 我想这里可以使用一些奇特的索引技巧 但我不知道是哪一个 这里可以使用 einsum 吗 a 0 for i in range len b a numpy mean C d e f b i

随机推荐

  • 在 bash 中使用正则表达式删除 XML 注释

    我想使用正则表达式 awk sed grep 删除 bash 中的 XML 注释 我看过有关此问题的其他问题 但他们遗漏了一些东西 这是我的 xml 代码 table table
  • mPDF 错误:某些数据已输出到浏览器

    我正在使用 mpdf 将 html 转换并显示为 PDF 当我在本地电脑 服务器上运行它时 我看到了 pdf 但是当我在我的站点服务器上运行它时 我收到此错误 mPDF错误 某些数据已输出到浏览器 无法发送PDF文件 url http SI
  • Rails:使用 Font Awesome

    我的网页设计师为我提供了更新的字体 图标 这些字体 图标已添加到 font Awesome 他将其放置在本地字体文件夹中 我还获得了一个 font awesome css 文件 我直接将 fonts 文件夹复制到我的 asset 中 并将
  • jquery Draggable & Droppable 获取源容器(draggable 来自)

    我为不同的答案做了这个 jsfiddle 我想知道如何获得可放置的源容器 http jsfiddle net d7wsz 8 jquery 是 Table1 tr not disabled Table2 tr not disabled Ta
  • 在 R、Rmd、knitr、bookdown 中打印 UTF-8 字符

    更新 2018 年 4 月 在不同的设置和计算机下 问题仍然存在 我相信它与所有 UNICODE UTF 8 字符有关 https www joelonsoftware com 2003 10 08 the absolute minimum
  • 获取adb版本失败; Ubuntu 11.10 中错误 = 13

    我向 eclipse 添加了 32 位 android adk Classic Indigo 版本 3 7 0 Ubuntu 11 10 中的构建 ID I20110613 1736 我使用 32 位 Ubuntu 当我启动 Eclipse
  • mod_rewrite 重定向不存在的 URL

    我有一个旧网站 我已经接管了 新用户基本上会获得为他们创建的自定义页面 这是以一种不太奇妙的方式完成的 目前 它实际上生成一个以创建的 slug URL 命名的文件 并将其符号链接到名为 main 的文件夹 显然我想改变这一点 我的计划只是
  • FsUnit“should equal”在“Some []”上失败

    当我使用 NUnit 2 6 3 运行 FsUnit 测试时 let f xs Some List map 2 xs
  • jQuery 通过一个操作在三个 SELECT 下拉列表中选择相同的选项

    我有 3 个 SELECT 下拉菜单 SELECT 1
  • 在 iOS 9 仅快捷栏模式下,与键盘顶部对齐的视图出现在错误的位置

    iOS 9 添加了一个快捷栏到 iOS 8QuickType 栏 作为此更改的一部分 如果您将蓝牙键盘连接到 iPad 键盘将处于最小化的仅限快捷栏模式 可以通过在模拟器中按 command k 来模拟 我有使用类似于以下方法获取键盘高度的
  • CollectionView 中用于评论和回复的多个单元格

    我有两种不同的单元格类型 一种用于评论 另一种用于回复 我正在尝试以相同的方式呈现它们collectionView然后也许可以像这样对它们进行分组 每个具有特定 id 的评论下面都有其回复 然而 无论什么尝试 我都失败了 你会怎样做呢 pr
  • 解析日期并将其存储在 SQLite 数据库中

    我正在使用 SAXParser 解析 xml 文件 并在处理程序内部创建对象 其中数据成员之一是日期 我的 XML 文件上的日期采用以下格式 2010 12 28 但我找不到如何将这样的字符串转换为 Date 对象 而且我也不明白如何将它存
  • 如何最好地表示数据库中属性数量可变的项目?

    假设您想创建小部件列表 小部件制造商都创建具有不同数量和类型属性的小部件 Widget 卖家对于想要在数据库中存储和显示的属性类型和数量都有不同的偏好 现在的问题是 每次添加新的小部件时 它可能具有当前任何其他小部件都不存在的属性 当前您通
  • 从java调用ant,ant终止后返回java

    到目前为止 我已经从java调用了ant脚本 现在的问题是 ant构建终止后是否可以恢复java执行 我该怎么做 org apache tools ant Main s main and startAnt 方法调用exit 方法依次调用Sy
  • 使用 angular.js 将自定义标头添加到 HTTP 请求

    我是 angular js 的新手 我正在尝试向请求添加一些标头 var config headers Authorization Basic d2VudHdvcnRobWFuOkNoYW5nZV9tZQ Accept applicatio
  • VBA 中的 while 循环

    我的数据如下表所示 该数据集中的观察数量每个月都有所不同 列保持不变 我想在每一行中循环我的代码 直到该行为空 我认为 do while 循环是合适的 但到目前为止我还没有成功执行它 值得注意的是 我是一个完全的 VBA 新手 其他一些注意
  • 如何获取两个日期时间之间的小时和分钟差异

    如果我有两个这样的日期时间 transtime in transtime out 如何以以下格式获取这些日期时间之间的差异 hh mm I use DATEDIFF hour transtime in transtime out 但我只得到
  • 使用 InvokeScript 更改 C# 变量

    我需要检查 Windows Phone 应用程序中的 WebBrowser 控件是否有历史记录 我想出的方法是使用browser InvokeScript eval if history length gt 0 history go 1 我
  • 一次更新两个表

    我的 MySQL 版本使用的是 5 1 41 3ubuntu12 10 UPDATE profiledata SET aboutyou aboutyou quotes quotes WHERE uid sess uid and UPDATE
  • 如何使用OpenFeign获取pojo数组?

    我正在尝试使用 OpenFeign 客户端访问 API 获取一些 JSON 并将其转换为 POJO 数组 以前我只是简单地获取一串 JSON 并使用 Gson 将其转换为数组 如下所示 FeignInterface String get R