xml字串轉JSON字串

Ashe|||^_^發表於2024-09-19

xml字串轉JSON字串,可以直接透過jackson提供的方法進行快速轉換。在web專案中通常會引入spring-boot-starter-web依賴。

但是spring-boot-starter-web依賴包括Jackson的JSON處理庫(如jackson-databindjackson-core等),不一定直接包含處理XML的Jackson庫(如jackson-dataformat-xml),因此你可能需要額外引入依賴

        <!-- 透過繼承機制來間接指定版本號,同時避免Jackson的版本衝突 -->        
        <dependency>
            <groupId>com.fasterxml.jackson.dataformat</groupId>
            <artifactId>jackson-dataformat-xml</artifactId>
        </dependency>

xml字串轉JSON字串,程式碼示例:

    public static String convertXmlToJson(String xml) throws Exception {
        XmlMapper xmlMapper = new XmlMapper();
        JsonNode jsonNode = xmlMapper.readTree(xml);
        ObjectMapper jsonMapper = new ObjectMapper();
        // 將JsonNode轉換為JSON字串
        return jsonMapper.writeValueAsString(jsonNode);
    }

xml字串轉Java類物件,程式碼示例:

import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;  
  
@JacksonXmlRootElement(localName = "user") // localName用以指定xml文件根元素的key
public class User {  
    private String name;  
    private int age;  
  
    // getter和setter省略  
} 
 public class XmlConverter {  
  
    public static <T> T convertXmlToJavaObject(String xml, Class<T> clazz) throws Exception {  
        XmlMapper xmlMapper = new XmlMapper();  
        // 使用readValue方法將XML字串反序列化為Java物件  
        return xmlMapper.readValue(xml, clazz);  
    }  
  
    public static void main(String[] args) {  
        String xml = "<user><name>John Doe</name><age>30</age></user>";  
        try {  
            User user = convertXmlToJavaObject(xml, User.class);  
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
    }  
}

相關文章