[英]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。 如何通過注入ObjectMapper
或XmlMapper
來解析 xml ?
在pom.xml
我添加了jackson-core
和jackson-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.