如何解决如何使用 Jackson 使用 feign 反序列化?
我有一个第三方端点,它以 xml 格式返回数据,内容类型为 text/xml;charset=UTF-8
。我想使用 feign 来访问这个端点并将 xml 反序列化到我的 pojo 中。
我发布了关于仅从示例 xml 文件反序列化的 another question(并且我得到了所需的答案)。但是,在使用 feign 时,建议的解决方案不起作用。
这是端点返回的xml。
<?xml version="1.0"?>
<Records>
<Record>
<Prop name="commerce">sku1</Prop>
<Prop name="commerce">sku2</Prop>
<Prop name="commerce">sku3</Prop>
<Prop name="commerce">sku4</Prop>
</Record>
<Record>
<Prop name="commerce">sku10</Prop>
<Prop name="commerce">sku20</Prop>
<Prop name="commerce">sku30</Prop>
<Prop name="commerce">sku40</Prop>
</Record>
</Records>
这是我从 openfeign 文档本身获得的 feign 服务和相应的 feign 配置。
@FeignClient(value = "api-service",url = "http://localhost:3000",configuration = MyFeignConfig.class)
public interface MyFeignService {
@GetMapping(value = "/skus",consumes = "text/xml")
Records getData();
}
@Configuration
public class MyFeignConfig {
@Bean
public Decoder feignDecoder() {
JAXBContextFactory jaxbFactory = new JAXBContextFactory.Builder()
.withMarshallerJAXBEncoding("UTF-8")
.build();
return new JAXBDecoder(jaxbFactory);
}
}
这些是我的 pojos(为简洁起见,删除了 getter 和 setter)
public class Records {
@JsonProperty("Record")
private List<Record> records;
}
public class Record {
@JsonProperty("Prop")
private List<Prop> props;
}
public class Prop {
@JsonProperty("name")
private String name;
@JacksonXmlText
private String text;
}
这就是我如何称呼假装
...
Records records = myFeignService.getData();
...
这是实现这样的事情的正确方法吗?这似乎不起作用,无论我尝试做什么来修复它,最终都会遇到一些新问题。所以我想知道是否有更简单的方法来使用 feign 命中端点并将响应反序列化为我的 java 对象?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。