当前位置: 首页 > article >正文

使用Jackson库的ObjectMapper类将Java对象转换为JSON格式

ObjectMapper提供了读取和写入JSON的功能,可以与基本的POJO(Plain Old Java Object)进行交互。

以下是该过程的概述和代码示例,包括定义必要的依赖项、创建Java类以及编写将这些类转换为JSON的代码。

添加依赖项

首先,在你的pom.xml文件中添加以下依赖项:

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>LATEST_VERSION</version> <!-- 请替换为Maven中央仓库上的最新版本 -->
</dependency>

这个依赖会自动引入jackson-corejackson-annotations

定义Java类

接下来,我们定义两个简单的Java类:PostTagPost类表示一个博客文章,而Tag类则表示文章的标签。

Post.java
package net.javaguides.jackson.pojotojson;

import java.util.Date;
import java.util.HashSet;
import java.util.Set;

public class Post {
    private Long id;
    private String title;
    private String description;
    private String content;
    private Date postedAt = new Date();
    private Date lastUpdatedAt = new Date();
    private Set<Tag> tags = new HashSet<>();

    // Constructors, getters and setters...
}
Tag.java
package net.javaguides.jackson.pojotojson;

public class Tag {
    private Long id;
    private String name;

    // Constructors, getters and setters...
}

使用ObjectMapper转换Java对象为JSON

现在我们可以创建一个应用程序来演示如何使用ObjectMapperPost对象序列化为JSON字符串,并将其保存到文件中。

JacksonPojoToJson.java
package net.javaguides.jackson.pojotojson;

import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Date;
import java.util.HashSet;
import java.util.Set;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;

public class JacksonPojoToJson {
    public static void main(String[] args) throws IOException {
        // Create ObjectMapper
        ObjectMapper mapper = new ObjectMapper();
        mapper.enable(SerializationFeature.INDENT_OUTPUT);

        // create a post
        Post post = new Post();
        post.setTitle("Jackson JSON API Guide");
        post.setId(100L);
        post.setDescription("Post about Jackson JSON API");
        post.setContent("HTML content here");
        post.setLastUpdatedAt(new Date());
        post.setPostedAt(new Date());

        // create some predefined tags
        Set<Tag> tags = new HashSet<>();
        tags.add(new Tag(1L, "Java"));
        tags.add(new Tag(2L, "Jackson"));
        tags.add(new Tag(3L, "JSON"));

        // set tags to post
        post.setTags(tags);

        // Convert object to JSON string and print it
        String postJson = mapper.writeValueAsString(post);
        System.out.println(postJson);

        // Save JSON string to file
        try (FileOutputStream fileOutputStream = new FileOutputStream("post.json")) {
            mapper.writeValue(fileOutputStream, post);
        }
    }
}

这段代码做了如下几件事:

  • 创建了一个ObjectMapper实例,并启用了漂亮的输出格式。
  • 创建了一个Post对象并设置了它的属性。
  • 创建了一些预定义的Tag对象,并将它们添加到了Post对象的集合中。
  • 使用ObjectMapperwriteValueAsString方法将Post对象转换为JSON字符串,并打印出来。
  • 使用ObjectMapperwriteValue方法将JSON数据直接写入名为post.json的文件中。

注意:在最新的Jackson版本中,推荐使用try-with-resources语句来确保文件流正确关闭,如上面所示。

当运行这段代码时,它将在控制台输出JSON格式的字符串,并且会在项目的根目录下创建一个名为post.json的文件,里面包含了同样的JSON内容。


http://www.kler.cn/a/429239.html

相关文章:

  • 数据结构之五:排序
  • ubuntu18.04升级到20.04
  • Web后端开发技术:RESTful 架构详解
  • 聚观早报 | 华为Mate 70开售;小米15 Ultra影像大升级
  • HDFS的架构优势与基本操作
  • vivado中,generate output product 和Create HDL wrapper的作用
  • 数据分析power bi负值条形图
  • 大模型Qwen面试内容整理-模型部署与优化
  • 代码随想录第40天
  • [MySQL基础](三)SQL--图形化界面+DML
  • 使用 Temporal 管理和调度 Couchbase SQL 脚本的实际例子
  • React第十四节useState使用详解差异
  • MongoDB 建模调优change stream实战
  • 【html网页页面010】html+css制作茶品牌文创网页制作含视频元素(7页面附效果及源码)
  • 华为TaurusDB与GaussDB:信创改造的“降本提效”之路
  • npm、yarn、pnpm 设置最新国内镜像源(附官方镜像源和最新阿里源),以及 nrm 的使用教程
  • 数据结构--树和二叉树
  • HTML区块
  • 【C/C++】关于链表插入函数可能的错误
  • Rust隐式返回(最后一个表达式后不加分号)与Rust显式返回(Rust return)(Rust隐示返回、Rust显示返回)