我试图用自定义反序列化程序在spring启动测试中解析xml。
@SpringBootTest
public class MyTest {
@Autowired
ObjectMapper mapper;
@Test
public void shouldParseXmlString() {
final String input = "<abc>value</abc>" // Some XML string which is valid xml
MyClass myClass = mapper.readValue(input, MyClass.class);
assertEquals("value", myClass.getAbc());
}
}
我有一个自定义反序列化程序 JsonDeserializer<MyClass>
并将xml反序列化为 MyClass
. 当我使用 XmlMapper
直接代替注射它工作得很好,但当我试图注射 ObjectMapper
在测试中,它失败了,错误如下。
com.fasterxml.jackson.core.JsonParseException: Unexpected character ('<' (code 60)) expected a valid value (JSON String, Number, Array, Object or token 'null', 'true' or 'false')
如错误所示,它试图将输入字符串解析为json而不是xml。如何通过注入 ObjectMapper
或者 XmlMapper
?
在 pom.xml
我补充说 jackson-core
以及 jackson-dataformat-xml
作为版本2.10.0的依赖项
1条答案
按热度按时间vxbzzdmp1#
自动布线
ObjectMapper
会自动连线吗ObjectMapper
按类型划分的bean。您期望的是将xmlmapper注入类型为的变量ObjectMapper
. 假设你有一个XmlMapper
定义为你可以把它注射到
ObjectMapper
按名称列出的变量