objectmapper正在尝试将字符串解析为json而不是xml

z9smfwbn  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(442)

我试图用自定义反序列化程序在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的依赖项

vxbzzdmp

vxbzzdmp1#

自动布线 ObjectMapper 会自动连线吗 ObjectMapper 按类型划分的bean。您期望的是将xmlmapper注入类型为的变量 ObjectMapper . 假设你有一个 XmlMapper 定义为

@Bean
public XmlMapper xmlMapper(){
    return new XmlMapper();
}

你可以把它注射到 ObjectMapper 按名称列出的变量

@Qualifier("xmlMapper")
@Autowired
private ObjectMapper mapper;

相关问题