如何在 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