今天就跟大家聊聊有關(guān)Java 中怎么將xml 和 json進(jìn)行轉(zhuǎn)換,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
站在用戶的角度思考問題,與客戶深入溝通,找到奎文網(wǎng)站設(shè)計(jì)與奎文網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:成都做網(wǎng)站、網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、申請(qǐng)域名、雅安服務(wù)器托管、企業(yè)郵箱。業(yè)務(wù)覆蓋奎文地區(qū)。
@JsonProperty:把屬性的名稱序列化成另一個(gè)名稱 @JsonFormat:日期格式轉(zhuǎn)換(例如:@JsonFormat(timezone=“GTM+8”,pattern=“yyyy-MM-dd HH:mm:ss”)) @JsonIgnoreProperties:忽略類的某個(gè)屬性(作用于類,例如:@JsonIgnoreProperties({“屬性1”,“屬性2”})) @JsonIgnore:忽略類的某個(gè)屬性(作用于屬性,直接在屬性加注解即可) @JacksonXmlElementWrapper:可用于指定List等集合類,外圍標(biāo)簽名 @JacksonXmlProperty:指定包裝標(biāo)簽名,或者指定標(biāo)簽內(nèi)部屬性名 @JacksonXmlRootElement:指定生成xml根標(biāo)簽的名字 @JacksonXmlText:指定當(dāng)前值,沒有xml標(biāo)簽包裹 【tips】 在類中的部分屬性使用@JsonProperty和@JacksonXmlProperty注解時(shí),生成的XML字符串標(biāo)簽順序可能會(huì)發(fā)生改變
XmlMapper類的方法
實(shí)體類(任意類型)解析為xml的字符串 String writeValueAsString(Object var1); 把字符串轉(zhuǎn)換為實(shí)體類T readValue(String var1, Class var2); 讀取xml字符串為json格式 JsonNode readTree(String var1);
JsonNode類的方法
獲取json中的某個(gè)節(jié)點(diǎn)值 JsonNode get(String var1);
//java項(xiàng)目www.fhadmin.org @Data public class Student { private String studentNo; private String studentName; }
【tips】代碼中打印語句后的注釋為控制臺(tái)打印的結(jié)果
//java項(xiàng)目www.fhadmin.org public class Demo { //創(chuàng)建XmlMapper對(duì)象,用于實(shí)體與json和xml之間的相互轉(zhuǎn)換 private static final XmlMapper XML_MAPPER = new XmlMapper(); public static void main(String[] args) throws Exception { Student s = new Student(); s.setStudentNo("202101001"); s.setStudentName("張三"); //實(shí)體類解析為xml的字符串(理論上可以將任意類型解析為xml字符串) String xmlStr = XML_MAPPER.writeValueAsString(s); System.out.println(xmlStr);////把字符串轉(zhuǎn)換為實(shí)體類 Student student = XML_MAPPER.readValue(xmlStr, Student.class); System.out.println(student);//Student(studentNo=202101001, studentName=張三) //讀取xml字符串為json格式 JsonNode jsonNode = XML_MAPPER.readTree(xmlStr); System.out.println(jsonNode);//{"studentNo":"202101001","studentName":"張三"} //獲取json中的某一個(gè)節(jié)點(diǎn)值 JsonNode studentNo = jsonNode.get("studentNo"); System.out.println(studentNo);//"202101001" } } 202101001 張三
運(yùn)行結(jié)果
import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper; import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty; import lombok.Data; import java.util.List; /** * @java項(xiàng)目 www.fhadmin.org * @version V1.0 * @Title: * @Description: * @date 2021/1/10 21:40 */ @Data @JsonIgnoreProperties({"ignore"})//忽略類的某個(gè)屬性 public class Clazz { //把屬性的名稱序列化成另一個(gè)名稱 @JsonProperty("CLAZZNO") private String clazzNo; //指定包裝標(biāo)簽名,或者指定標(biāo)簽內(nèi)部屬性名 @JacksonXmlProperty(localName = "CLAZZNAME") private String clazzName; //忽略類的某個(gè)屬性 @JsonIgnore private String ignore; private Teacher teacher; //指定外圍標(biāo)簽名 @JacksonXmlElementWrapper(localName = "studentList") //指定標(biāo)簽名 @JacksonXmlProperty(localName = "student") private ListstudentList; } @Data class Teacher { private String teacherName; private String teacherSex; } @Data class Student { private String studentNo; private String studentName; }
import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.dataformat.xml.XmlMapper; import java.util.ArrayList; import java.util.List; /** * @java項(xiàng)目www.fhadmin.org * @version V1.0 * @Title: * @Description: * @date 2021/1/10 21:43 */ public class Demo { //創(chuàng)建XmlMapper對(duì)象,用于實(shí)體與json和xml之間的相互轉(zhuǎn)換 private static final XmlMapper XML_MAPPER = new XmlMapper(); public static void main(String[] args) throws Exception{ Clazz c = new Clazz(); c.setClazzNo("201802"); c.setClazzName("三年級(jí)2班"); c.setIgnore("這是被忽略的屬性"); Teacher t = new Teacher(); t.setTeacherName("宋老師"); t.setTeacherSex("男"); c.setTeacher(t); Liststudents = new ArrayList<>(); Student s1 = new Student(); s1.setStudentNo("202101001"); s1.setStudentName("張三"); Student s2 = new Student(); s2.setStudentNo("202101002"); s2.setStudentName("李四"); students.add(s1); students.add(s2); c.setStudentList(students); //實(shí)體類解析為xml的字符串 String xmlStr = XML_MAPPER.writeValueAsString(c); System.out.println(xmlStr); //把某一類型的東西轉(zhuǎn)換為實(shí)體類 Clazz clazz = XML_MAPPER.readValue(xmlStr, Clazz.class); System.out.println(clazz); //取出Clazz類的studentList屬性并打印 List studentList = clazz.getStudentList(); System.out.println(studentList); //讀取xml字符串為json格式 JsonNode jsonNode = XML_MAPPER.readTree(xmlStr); System.out.print(jsonNode); } }
運(yùn)行結(jié)果
Clazz(clazzNo=201802, clazzName=三年級(jí)2班, ignore=null, teacher=Teacher(teacherName=宋老師, teacherSex=男), studentList=[Student(studentNo=202101001, studentName=張三), Student(studentNo=202101002, studentName=李四)]) [Student(studentNo=202101001, studentName=張三), Student(studentNo=202101002, studentName=李四)] {"teacher":{"teacherName":"宋老師","teacherSex":"男"},"CLAZZNO":"201802","CLAZZNAME":"三年級(jí)2班","studentList":{"student":{"studentNo":"202101002","studentName":"李四"}}} 宋老師 男 201802 三年級(jí)2班 202101001 張三 202101002 李四
看完上述內(nèi)容,你們對(duì)Java 中怎么將xml 和 json進(jìn)行轉(zhuǎn)換有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。