xml字串轉JSON字串,可以直接透過jackson提供的方法進行快速轉換。在web專案中通常會引入spring-boot-starter-web
依賴。
但是spring-boot-starter-web
依賴包括Jackson的JSON處理庫(如jackson-databind
、jackson-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();
}
}
}