如何在 Retrofit 库中将 YAML 响应正文解析为 POJO?

Posted

技术标签:

【中文标题】如何在 Retrofit 库中将 YAML 响应正文解析为 POJO?【英文标题】:How to parse YAML response body to POJO in Retrofit library? 【发布时间】:2021-12-19 15:04:35 【问题描述】:

我在 Retrofit 中处理 YAML 格式的响应时遇到问题。到目前为止,我只处理 JSON 格式或纯文本的响应正文。对于这些类型,我总是为 JSON 准备 gson、jackson 和纯文本标量等转换器。我找到了所有转换器的存储库:retrofit-convertes。 在文档中简短地提到我需要为这种类型创建自己的转换器。

如果您需要与使用 Retrofit 开箱即用不支持的内容格式(例如 YAML、txt、自定义格式)的 API 进行通信,或者您希望使用不同的库来实现现有格式,您可以轻松创建自己的转换器。创建一个扩展 Converter.Factory 类的类,并在构建适配器时传入一个实例。

遗憾的是,我没有看到任何有关如何创建此类转换器的教程。是否有任何文档说明如何执行此操作,或者是否有任何其他选项可以处理此类情况?

【问题讨论】:

【参考方案1】:

在您的情况下,您可以将 Jackon 与 yaml 数据格式一起使用。

Retrofit retrofit = new Retrofit.Builder()
.baseUrl("<your base url>")
.addConverterFactory(JacksonConverterFactory.create(new ObjectMapper(new YAMLFactory())))
.build();

有关更多信息,请查看以下链接:

https://github.com/square/retrofit/tree/master/retrofit-converters/jackson

https://github.com/FasterXML/jackson-dataformats-text/tree/master/yaml

【讨论】:

以上是关于如何在 Retrofit 库中将 YAML 响应正文解析为 POJO?的主要内容,如果未能解决你的问题,请参考以下文章

解析Soap服务使用Retrofit我正面临这样的异常(即)响应中类别包络模型中不匹配的身体模型

使用 RxJava2 和 Retrofit2 时如何访问响应头?

如何在 Retrofit 中将 InputStream 作为请求的主体发布?

YamlDotNet 在 C# 中将 YAML 转换为 JSON

如何在 Gatsby 中将多个 yaml 文件映射到 frontmatter

如何使用 Kotlin Coroutines 在 Retrofit 中处理 204 响应?