簡體   English   中英

ObjectMapper 正在嘗試將字符串解析為 json 而不是 xml

[英]ObjectMapper is trying to parse string as json instead of xml

我正在嘗試使用自定義解串器在 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。 如何通過注入ObjectMapperXmlMapper來解析 xml ?

pom.xml我添加了jackson-corejackson-dataformat-xml作為版本 2.10.0 的依賴項

自動裝配ObjectMapper只會按類型自動裝配ObjectMapper bean。 您所期望的是將 XmlMapper 注入到ObjectMapper類型的變量中。 假設您定義了一個XmlMapper bean,例如

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

您可以按名稱將其注入ObjectMapper變量

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM