真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Java中怎么將xml和json進(jìn)行轉(zhuǎn)換

今天就跟大家聊聊有關(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ū)。

一、相關(guān)注解與方法

1.注解(部分)

@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ā)生改變

2.方法(主要)

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);

二、使用步驟

1.新建實(shí)體類

//java項(xiàng)目www.fhadmin.org
@Data
public class Student {
    private String studentNo;
    private String studentName;
}

2.新建測試類

【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);//202101001張三

        //把字符串轉(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"
    }
}

運(yùn)行結(jié)果
Java 中怎么將xml 和 json進(jìn)行轉(zhuǎn)換

三、綜合案例

1.實(shí)體類部分

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 List studentList;
}

@Data
class Teacher {
    private String teacherName;
    private String teacherSex;
}

@Data
class Student {
    private String studentNo;
    private String studentName;
}

2.測試類部分

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);
            List students = 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é)果

宋老師201802三年級(jí)2班202101001張三202101002李四
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":"李四"}}}

看完上述內(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è)資訊頻道,感謝大家的支持。


分享題目:Java中怎么將xml和json進(jìn)行轉(zhuǎn)換
文章鏈接:http://weahome.cn/article/gdjjsj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部