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

Jackson使用示例-Bean、XML、Json之間相互轉換

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

前言

目前常見的json解析工具有jackson、fastjson、gson。

  • jackson是Spring mvc內置的json轉換工具;
  • fastjson是阿里的開源JSON解析庫,由于fastjson經常會出現(xiàn)漏洞,暫不考慮;
  • Jackson是一個強大工具,可用于Json、XML、實體之間的相互轉換。

Jackson相關注解

注解

說明

@JsonProperties

把屬性的名稱序列化時轉換為另外一個名稱 ;@JsonProperty(“DepName”)

@JsonFormat

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

@JsonPropertyOrder

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

@JsonIgnore

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

@JacksonXmlProperty

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

@JacksonXmlRootElement

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

@JacksonXmlElementWrapper

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

1、對象和json互轉

引入jackson相關依賴:

<!--注解包,提供標準注解功能-->
<dependency>
	<groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-annotations</artifactId>
</dependency>
<!--核心包,提供基于"流模式"解析的相關 API-->
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
</dependency>
<!--數(shù)據(jù)綁定包,提供基于"對象綁定" 解析的相關 API ( ObjectMapper ) 和"樹模型" 解析的相關 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實體類:

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

測試代碼:

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

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

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

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

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

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


            //Map和json互轉
            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互轉
            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();
        }
    }
}

打印結果:

json字符串:{"name":"秋一葉","age":18,"sex":"男"}
對象1:Employees(name=秋一葉, age=18, sex=男)
====================================================
對象2:Employees(name=秋一葉, age=18, sex=男)
====================================================
對象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和對象互轉

Department實體:

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

測試代碼:

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

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

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

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

打印結果:

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

Jackson使用示例-Bean、XML、Json互轉_jackson

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

相關文章

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

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

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

    Java中RabbitMQ隊列實現(xiàn)RPC詳解

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

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

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

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

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

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

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

    Java Feign微服務接口調用方法詳細講解

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

    23種設計模式(19)java責任鏈模式

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

    新手了解java IO基礎知識

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

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

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

    IDEA構建JavaWeb項目并通過Tomcat成功運行解讀

    這篇文章主要介紹了IDEA構建JavaWeb項目并通過Tomcat成功運行方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2026-03-03

最新評論

嘉义县| 泸州市| 天峻县| 凌源市| 乐东| 来宾市| 横峰县| 高唐县| 保亭| 博爱县| 维西| 鹤山市| 洮南市| 惠水县| 昌黎县| 沅江市| 蓬安县| 彰化县| 新乐市| 东丰县| 长宁区| 连平县| 佛冈县| 桂林市| 永泰县| 霍山县| 沾化县| 彭泽县| 晋江市| 淮安市| 探索| 西和县| 宁陕县| 宣威市| 云梦县| 北安市| 吴堡县| 米林县| 屏山县| 崇阳县| 台东县|