最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Jackson使用示例-Bean、XML、Json之間相互轉(zhuǎn)換

 更新時(shí)間:2024年05月18日 09:36:34   作者:秋一葉葉  
Jackson是一個(gè)強(qiáng)大工具,可用于Json、XML、實(shí)體之間的相互轉(zhuǎn)換,JacksonXmlElementWrapper用于指定List等集合類,外圍標(biāo)簽名,JacksonXmlProperty指定包裝標(biāo)簽名,或者指定標(biāo)簽內(nèi)部屬性名,JacksonXmlRootElement指定生成xml根標(biāo)簽的名字,JacksonXmlText指定當(dāng)前這個(gè)值

前言

目前常見(jiàn)的json解析工具有jackson、fastjson、gson。

  • jackson是Spring mvc內(nèi)置的json轉(zhuǎn)換工具;
  • fastjson是阿里的開(kāi)源JSON解析庫(kù),由于fastjson經(jīng)常會(huì)出現(xiàn)漏洞,暫不考慮;
  • Jackson是一個(gè)強(qiáng)大工具,可用于Json、XML、實(shí)體之間的相互轉(zhuǎn)換。

Jackson相關(guān)注解

注解

說(shuō)明

@JsonProperties

把屬性的名稱序列化時(shí)轉(zhuǎn)換為另外一個(gè)名稱 ;@JsonProperty(“DepName”)

@JsonFormat

把屬性的格式序列化時(shí)轉(zhuǎn)換成指定的格式;@JsonFormat(pattern = “yyyy-MM-dd”)

@JsonPropertyOrder

指定屬性在序列化時(shí) json 中的順序;@JsonPropertyOrder({ “age”, “name” })

@JsonIgnore

排除指定屬性不被json序列化

@JacksonXmlProperty

指定XML命名空間的名稱;@JacksonXmlProperty(localName = “DepName”)

@JacksonXmlRootElement

指定XML根元素命名空間的名稱;@JacksonXmlRootElement(localName = “RootName”)

@JacksonXmlElementWrapper

可用于指定List等集合類,外圍標(biāo)簽名;@JacksonXmlElementWrapper(localName = “EmpMessage”)

1、對(duì)象和json互轉(zhuǎn)

引入jackson相關(guān)依賴:

<!--注解包,提供標(biāo)準(zhǔn)注解功能-->
<dependency>
	<groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-annotations</artifactId>
</dependency>
<!--核心包,提供基于"流模式"解析的相關(guān) API-->
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
</dependency>
<!--數(shù)據(jù)綁定包,提供基于"對(duì)象綁定" 解析的相關(guān) API ( ObjectMapper ) 和"樹模型" 解析的相關(guān) API-->
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
</dependency>
<!--日期類型序列化包-->
<dependency>
    <groupId>com.fasterxml.jackson.datatype</groupId>
    <artifactId>jackson-datatype-jsr310</artifactId>
</dependency>
<!--引入xml功能-->
<dependency>
    <groupId>com.fasterxml.jackson.dataformat</groupId>
    <artifactId>jackson-dataformat-xml</artifactId>
</dependency>

Employees實(shí)體類:

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Employees {
    private String name;
    private Integer age;
    private String sex;
}

測(cè)試代碼:

/**
 * @author 秋一葉
 * @create 2024-04-23 21:00
 * json字符串和對(duì)象、集合、map互轉(zhuǎn)
 *
 */
public class Demo2 {
    public static void main(String[] args) {
   		ObjectMapper objectMapper = new ObjectMapper();
        Employees employees1 = new Employees("秋一葉",18,"男");
        Employees employees2 = new Employees("小王",20,"男");
        
        try {
            //對(duì)象轉(zhuǎn)json字符串
            String jsonString = objectMapper.writeValueAsString(employees1);
            //json字符串轉(zhuǎn)為對(duì)象
            Employees emp1 = objectMapper.readValue(jsonString, Employees.class);
            System.out.println("json字符串:" + jsonString);
            System.out.println("對(duì)象1:" + emp1);

            System.out.println("====================================================");

            //對(duì)象轉(zhuǎn)為json字符串寫入文件
            objectMapper.writeValue(new File("emp.json"), employees1);
            //從文件中讀取json字符串轉(zhuǎn)為對(duì)象
            Employees emp2 = objectMapper.readValue(new File("emp.json"), Employees.class);
            System.out.println("對(duì)象2:" + emp2);

            System.out.println("====================================================");

            //對(duì)象寫為字節(jié)流
            byte[] bytes = objectMapper.writeValueAsBytes(employees1);
            //字節(jié)流轉(zhuǎn)為對(duì)象
            Employees emp3 = objectMapper.readValue(bytes, Employees.class);
            System.out.println("對(duì)象3:" + emp3);

            System.out.println();
            System.out.println("*****************************************************");
            System.out.println();


            //Map和json互轉(zhuǎn)
            Map<String, Object> map = Maps.newHashMap();
            map.put("001", employees1);
            map.put("002", "元旦");
            String mapToString = objectMapper.writeValueAsString(map);
            Map<String, Object> stringToMap = objectMapper.readValue(mapToString, new TypeReference<Map<String, Object>>() {
            });
            System.out.println("json字符串:" + mapToString);
            System.out.println("map:" + stringToMap);

            System.out.println("====================================================");

            //List和json互轉(zhuǎn)
            List<Employees> empList = Lists.newArrayList(employees1, employees2);
            String jsonList = objectMapper.writeValueAsString(empList);
            List<Employees> stringToList = objectMapper.readValue(jsonList, new TypeReference<List<Employees>>() {
            });
            System.out.println("json字符串:" + jsonList);
            System.out.println("map:" + stringToList);

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

打印結(jié)果:

json字符串:{"name":"秋一葉","age":18,"sex":"男"}
對(duì)象1:Employees(name=秋一葉, age=18, sex=男)
====================================================
對(duì)象2:Employees(name=秋一葉, age=18, sex=男)
====================================================
對(duì)象3:Employees(name=秋一葉, age=18, sex=男)

*****************************************************

json字符串:{"001":{"name":"秋一葉","age":18,"sex":"男"},"002":"元旦"}
map:{001={name=秋一葉, age=18, sex=男}, 002=元旦}
====================================================
json字符串:[{"name":"秋一葉","age":18,"sex":"男"},{"name":"小王","age":20,"sex":"男"}]
map:[Employees(name=秋一葉, age=18, sex=男), Employees(name=小王, age=20, sex=男)]

2、XML和對(duì)象互轉(zhuǎn)

Department實(shí)體:

@Data
@JacksonXmlRootElement(localName = "RootName")
public class Department {
    @JacksonXmlProperty(localName = "DepName")
    private String depName;
    
    @JacksonXmlElementWrapper(localName = "EmpMessage")
    @JacksonXmlProperty(localName = "EmpName")
    List<Employees> employees; 
}

測(cè)試代碼:

public class Demo1 {
    public static void main(String[] args) {
        XmlMapper xmlMapper = new XmlMapper();
        //字段為null,自動(dòng)忽略,不再序列化
        xmlMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);

        Department department = new Department();
        Employees employees1 = new Employees("秋一葉",18,"男");
        Employees employees2 = new Employees("小王",20,"男");
        department.setDepName("產(chǎn)品研發(fā)部門");
        department.setEmployees(Lists.newArrayList(employees1, employees2));

        try {
            //對(duì)象轉(zhuǎn)xml
            String xml = xmlMapper.writeValueAsString(department);
            //xml轉(zhuǎn)對(duì)象
            Department dep = xmlMapper.readValue(xml, Department.class);

            System.out.println("返回的xml:" + xml);
            System.out.println("返回的實(shí)體:" + dep);
        } catch (JsonProcessingException e) {
            e.printStackTrace();
        }
    }
}

打印結(jié)果:

返回的xml:<RootName><DepName>產(chǎn)品研發(fā)部門</DepName><EmpMessage><EmpName><name>秋一葉</name><age>18</age><sex>男</sex></EmpName><EmpName><name>小王</name><age>20</age><sex>男</sex></EmpName></EmpMessage></RootName>
返回的實(shí)體:Department(depName=產(chǎn)品研發(fā)部門, employees=[Employees(name=秋一葉, age=18, sex=男), Employees(name=小王, age=20, sex=男)])

Jackson使用示例-Bean、XML、Json互轉(zhuǎn)_jackson

到此這篇關(guān)于Jackson使用示例-Bean、XML、Json之間相互轉(zhuǎn)換的文章就介紹到這了,更多相關(guān)Jackson使Bean、XML、Json互換內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 利用Java的Struts框架實(shí)現(xiàn)電子郵件發(fā)送功能

    利用Java的Struts框架實(shí)現(xiàn)電子郵件發(fā)送功能

    這篇文章主要介紹了利用Java的Struts框架實(shí)現(xiàn)電子郵件發(fā)送功能,Struts框架是Java的SSH三大web開(kāi)發(fā)框架之一,需要的朋友可以參考下
    2015-12-12
  • Java中RabbitMQ隊(duì)列實(shí)現(xiàn)RPC詳解

    Java中RabbitMQ隊(duì)列實(shí)現(xiàn)RPC詳解

    這篇文章主要介紹了Java中RabbitMQ隊(duì)列實(shí)現(xiàn)RPC詳解,在本教程中,我們將使用RabbitMQ構(gòu)建一個(gè)RPC系統(tǒng):一個(gè)客戶端和一個(gè)RPC服務(wù)器,我們將創(chuàng)建一個(gè)返回斐波那契數(shù)字的模擬RPC服務(wù),,需要的朋友可以參考下
    2023-08-08
  • SpringBoot啟動(dòng)時(shí)自動(dòng)執(zhí)行代碼的幾種實(shí)現(xiàn)方式

    SpringBoot啟動(dòng)時(shí)自動(dòng)執(zhí)行代碼的幾種實(shí)現(xiàn)方式

    這篇文章主要給大家介紹了關(guān)于SpringBoot啟動(dòng)時(shí)自動(dòng)執(zhí)行代碼的幾種實(shí)現(xiàn)方式,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-02-02
  • Java中的命名與目錄接口JNDI基本操作方法概覽

    Java中的命名與目錄接口JNDI基本操作方法概覽

    這篇文章主要介紹了Java中的命名與目錄接口JNDI基本操作方法概覽,JNDI提供統(tǒng)一的客戶端API使得Java應(yīng)用程序可以和這些命名服務(wù)和目錄服務(wù)之間進(jìn)行交互,需要的朋友可以參考下
    2016-03-03
  • Java順序表實(shí)現(xiàn)的撲克牌小游戲(附詳細(xì)代碼)

    Java順序表實(shí)現(xiàn)的撲克牌小游戲(附詳細(xì)代碼)

    在撲克牌游戲中,我們有時(shí)需要判斷一手牌是否是一個(gè)順子,也就是判斷5張牌是否連續(xù),這篇文章主要介紹了Java順序表實(shí)現(xiàn)的撲克牌小游戲的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-10-10
  • Java Feign微服務(wù)接口調(diào)用方法詳細(xì)講解

    Java Feign微服務(wù)接口調(diào)用方法詳細(xì)講解

    現(xiàn)如今微服務(wù)架構(gòu)十分流行,而采用微服務(wù)構(gòu)建系統(tǒng)也會(huì)帶來(lái)更清晰的業(yè)務(wù)劃分和可擴(kuò)展性。java如果使用微服務(wù)就離不開(kāi)springcloud,我這里是把服務(wù)注冊(cè)到nacos上,各個(gè)服務(wù)之間的調(diào)用使用feign
    2023-01-01
  • 23種設(shè)計(jì)模式(19)java責(zé)任鏈模式

    23種設(shè)計(jì)模式(19)java責(zé)任鏈模式

    這篇文章主要為大家詳細(xì)介紹了23種設(shè)計(jì)模式之java責(zé)任鏈模式,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • 新手了解java IO基礎(chǔ)知識(shí)

    新手了解java IO基礎(chǔ)知識(shí)

    這篇文章主要介紹了java 基礎(chǔ)知識(shí)之IO總結(jié)的相關(guān)資料,Java中的I/O分為兩種類型,一種是順序讀取,一種是隨機(jī)讀取,需要的朋友可以參考下,希望對(duì)你有幫助
    2021-07-07
  • Java?SimpleDateFormat與System類使用示例詳解

    Java?SimpleDateFormat與System類使用示例詳解

    這篇文章主要介紹了Java?SimpleDateFormat與System類使用示例,對(duì)于SimpleDateFormat類,是一個(gè)用來(lái)區(qū)分區(qū)域設(shè)置的方式進(jìn)行日期的是指,以及對(duì)日期進(jìn)行處理分析的一個(gè)實(shí)現(xiàn)類
    2022-11-11
  • IDEA構(gòu)建JavaWeb項(xiàng)目并通過(guò)Tomcat成功運(yùn)行解讀

    IDEA構(gòu)建JavaWeb項(xiàng)目并通過(guò)Tomcat成功運(yùn)行解讀

    這篇文章主要介紹了IDEA構(gòu)建JavaWeb項(xiàng)目并通過(guò)Tomcat成功運(yùn)行方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2026-03-03

最新評(píng)論

神木县| 山东| 宜州市| 芦溪县| 上思县| 库车县| 呼玛县| 富宁县| 深泽县| 杭州市| 山东省| 民权县| 兰考县| 东山县| 芜湖县| 九江县| 屯门区| 灵山县| 柯坪县| 云和县| 宜丰县| 华亭县| 登封市| 山西省| 鄂尔多斯市| 加查县| 蓬溪县| 玉溪市| 桂林市| 基隆市| 原阳县| 深州市| 襄城县| 永城市| 吉木乃县| 密山市| 浑源县| 偃师市| 安西县| 沁水县| 北碚区|