Java:jackson将xml和json转为JavaBean对象

简介: Java:jackson将xml和json转为JavaBean对象

依赖

<!-- xml => Object -->
<dependency>
    <groupId>com.fasterxml.jackson.dataformat</groupId>
    <artifactId>jackson-dataformat-xml</artifactId>
    <version>2.10.1</version>
</dependency>
<dependency>
    <groupId>org.codehaus.woodstox</groupId>
    <artifactId>woodstox-core-asl</artifactId>
    <version>4.4.1</version>
</dependency>
<!-- json => Object -->
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.10.0</version>
</dependency>

book.xml

<?xml version="1.0" encoding="UTF-8" ?>
<book>
    <id>1</id>
    <name>三国演义</name>
    <author>罗贯中</author>
</book>

book.json

{
  "id": 1,
  "name": "三国演义",
  "author": "罗贯中"
}

Book.java

package com.example.demo.pojo;
public class Book {
    private Integer id;
    private String name;
    private String author;
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getAuthor() {
        return author;
    }
    public void setAuthor(String author) {
        this.author = author;
    }
    @Override
    public String toString() {
        return "Book{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", author='" + author + '\'' +
                '}';
    }
}

测试类

package com.example.demo;
import com.example.demo.pojo.Book;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.dataformat.xml.JacksonXmlModule;
import com.fasterxml.jackson.dataformat.xml.XmlMapper;
import org.junit.jupiter.api.Test;
import java.io.IOException;
import java.io.InputStream;
public class JacksonTest {
    @Test
    public void testParseXml() throws IOException {
        InputStream input = JacksonTest.class.getResourceAsStream("/book.xml");
        JacksonXmlModule module = new JacksonXmlModule();
        XmlMapper mapper = new XmlMapper(module);
        Book book = mapper.readValue(input, Book.class);
        System.out.println(book);
        // Book{id=1, name='三国演义', author='罗贯中'}
        // 转xml
        String xml = mapper.writeValueAsString(book);
        System.out.println(xml);
        //    <Book><id>1</id><name>三国演义</name><author>罗贯中</author></Book>
    }
    @Test
    public void testParseJson() throws IOException {
        InputStream input = JacksonTest.class.getResourceAsStream("/book.json");
        ObjectMapper mapper = new ObjectMapper();
        // 反序列化时忽略不存在的JavaBean属性
        mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
        Book book = mapper.readValue(input, Book.class);
        System.out.println(book);
        // Book{id=1, name='三国演义', author='罗贯中'}
        //JavaBean变为JSON
        String json = mapper.writeValueAsString(book);
        System.out.println(json);
        //    {"id":1,"name":"三国演义","author":"罗贯中"}
    }
}

参考

https://www.liaoxuefeng.com/wiki/1252599548343744/1320418596093986

相关文章
|
关系型数据库 MySQL Linux
Linux安装部署MySQL5.7(企业常用版)超详细1
Linux安装部署MySQL5.7(企业常用版)超详细
884 0
Linux安装部署MySQL5.7(企业常用版)超详细1
|
XML 存储 JSON
如何快速实现XML与JSON转换
XML与JSON之间的转换常常用于以下场景: 1.数据交换:当需要在不同的系统、平台或服务之间进行数据交换时,常常会使用XML或JSON进行数据的序列化和反序列化。比如,一个Web服务可能需要返回数据给一个移动应用,这时,数据就可以通过XML或JSON格式进行传输。
|
应用服务中间件 nginx 前端开发
WebSocket加入心跳包防止自动断开连接
近日,在公司中开发一个使用websocket为前端推送消息的功能时,发现一个问题:就是每隔一段时间如果不传送数据的话,与前段的连接就会自动断开; 刚开始以为是session的原因,因为web session 的默认时间是30分钟;但是通过日志发现断开时间间隔时间远远不到30分钟;认真分析发现不操作间隔恰好为90秒 它就会在自动断开;随恍然大悟;原来是我们的使用nginx 代理,nginx配置了访问超时时间为90s; WebSocket是html5中用来实现长连接的一个协议。
25155 0
|
人工智能 JavaScript 程序员
Fitten Code:在VSCode插件市场备受欢迎的原因是什么?
随着AI技术的不断发展,AI在编写代码方面的能力也日益强大。充分利用AI的能力能够显著提高代码编写的效率和质量。今天我将向大家介绍一款备受瞩目的AI代码神器——Fitten Code,让我们一同揭开它神秘的面纱!
1047 3
常用工具类-Objects
本文介绍了Java标准库中的Objects工具类,它提供了一系列用于操作对象的实用方法,包括判断对象是否为空、比较两个对象是否相等、比较两个对象以及判断两个数组是否深度相等。文章通过示例代码展示了Objects类中isNull、nonNull、requireNull、equals、compare和deepEquals等方法的使用,突出了Objects类在处理对象时的便利性和实用性。
常用工具类-Objects
|
运维 监控 安全
携手阿里云CEN:共创SD-WAN融合广域网
在9月19日的阿里云云栖大会上,犀思云与阿里云联合推出Fusion WAN智连阿里云解决方案,该方案深度融合阿里云网络产品,如CEN和TR,实现一键部署和简化操作,大幅提升企业上云的可靠性和安全性。此创新方案不仅展示了犀思云在SD-WAN领域的技术积累,也体现了双方在推动企业数字化转型方面的强大实力,为客户带来更灵活、更高效的上云体验。
353 16
携手阿里云CEN:共创SD-WAN融合广域网
|
负载均衡 安全 Linux
在Linux中,什么是负载均衡,并且如何在Linux中实现它。
在Linux中,什么是负载均衡,并且如何在Linux中实现它。
|
存储 安全 开发工具
oss加密的工作流程
阿里云OSS提供服务器端(SSE-KMS BYOK、SSE-KMS默认密钥)和客户端(CSE)加密。SSE-KMS通过KMS托管密钥或默认密钥在服务器端自动加密/解密对象,减轻用户负担。CSE则在客户端加密数据,使用SDK和用户密钥,灵活性高但管理复杂。两者均保障数据传输和存储的安全。用户可依据安全需求和合规性选择加密方式。
461 4
|
安全 Linux iOS开发
【热门话题】 Fiddler:一款强大的Web调试代理工具——安装与使用详解
Fiddler是一款强大的Web调试工具,适用于Windows、macOS和Linux,用于捕获、记录和分析HTTP/HTTPS流量。本文详细介绍了Fiddler的安装步骤,包括下载、安装和配置,特别是信任根证书和代理设置。在使用方面,讲解了如何启动/停止捕获流量、查看和管理会话,以及重发请求、编辑请求/响应和清除会话。此外,还探讨了进阶功能,如自定义过滤规则、使用AutoResponder模拟服务器响应、性能分析和统计,以及插件扩展和脚本编写。Fiddler是学习HTTP协议和解决Web问题的得力工具。
1196 1
|
SQL Java 数据库连接
Mybatis Plus字段为空值时未更新解决方案
Mybatis Plus字段为空值时未更新解决方案
1557 1