深入浅析Java常用的格式化Json工具类

深入浅析Java常用的格式化Json工具类

什么是Json

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于阅读和编写,也易于机器解析和生成。JSON是基于JavaScript的一个子集。JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯。这些特性使JSON成为理想的数据交换语言。

Java中常用的Json工具类

Java中有多种Json工具类可供选择,常用的包括:

  • jackson
  • Gson
  • Fastjson

这些工具类都可以方便地将Java对象转换为Json格式,也可以将Json格式转换为Java对象。

接下来,我们将深入浅析这三个Json工具类的基本用法。

jackson

Jackson是由FasterXML开发的一个解析和序列化Json数据的Java库,常用于Web应用程序开发。Jackson提供了两种方法,用于将Java对象序列化为Json格式:data bindingtree model

data binding

Data binding是将Java对象序列化为Json格式的一种简单方法。要使用data binding,只需创建一个ObjectMapper对象,调用其writeValue()方法,将Java对象序列化为Json格式:

//User 类
public class User {
    private String name;
    private int age;

    public User() {}

    public User(String name, int age) {
        this.name = name;
        this.age = age;
    }

    // getter, setter ...
}

// 将对象序列化为 Json
ObjectMapper mapper = new ObjectMapper();
User user = new User("Alice", 25);
String jsonString = mapper.writeValueAsString(user);

tree model

Tree model是Jackson提供的另一种序列化Json数据的方法。它通常用于处理复杂的Json数据结构。

要使用tree model,可以创建一个JsonNode对象,然后使用ObjectMapper对象的readTree()或createObjectNode()方法将其转换为Json格式。

ObjectMapper mapper = new ObjectMapper();
JsonNode rootNode = mapper.createObjectNode();
JsonNode nameNode = mapper.createObjectNode();
nameNode.put("firstName", "Alice");
nameNode.put("lastName", "Smith");
rootNode.set("name", nameNode);
rootNode.put("age", 25);
String jsonString = mapper.writeValueAsString(rootNode);

Gson

Gson是Google开发的Java库,用于将Java对象序列化为Json格式,以及将Json格式反序列化为Java对象。Gson使用反射来解析Java对象,因此速度较慢,但由于其简单易用的API,仍然非常受欢迎。

将Java对象序列化为Json格式

要将Java对象序列化为Json格式,只需创建一个Gson对象,然后调用toJson()方法:

Gson gson = new Gson();
User user = new User("Alice", 25);
String jsonString = gson.toJson(user);

将Json格式反序列化为Java对象

要将Json格式反序列化为Java对象,只需调用fromJson()方法:

String jsonString = "{\"name\":\"Alice\",\"age\":25}";
User user = gson.fromJson(jsonString, User.class);

Fastjson

Fastjson是阿里巴巴出品的一个快速的Json处理工具箱,与其他Json工具相比,速度较快。其API简单易用,并且支持自定义序列化和反序列化规则。

将Java对象序列化为Json格式

要将Java对象序列化为Json格式,只需创建一个JSON对象,然后调用toJSONString()方法:

User user = new User("Alice", 25);
String jsonString = JSON.toJSONString(user);

将Json格式反序列化为Java对象

要将Json格式反序列化为Java对象,只需要调用parseObject()方法:

String jsonString = "{\"name\":\"Alice\",\"age\":25}";
User user = JSON.parseObject(jsonString, User.class);

示例

假设有一个班级信息,我们需要将其序列化为Json格式。

数据结构

public class Student {    
    private String name;
    private int age;
    private int score;

    public Student() {}

    public Student(String name, int age, int score) {
        this.name = name;
        this.age = age;
        this.score = score;
    }

    // getter, setter ...
}

public class ClassInfo {
    private String className;
    private int totalStudents;
    private List<Student> students;

    public ClassInfo() {}

    public ClassInfo(String className, int totalStudents, List<Student> students) {
        this.className = className;
        this.totalStudents = totalStudents;
        this.students = students;
    }

    // getter, setter ...
}

Jackson示例

ObjectMapper mapper = new ObjectMapper();
// 创建班级信息
ClassInfo classInfo = new ClassInfo();
classInfo.setClassName("Class A");
classInfo.setTotalStudents(2);
List<Student> students = new ArrayList<>();
students.add(new Student("Alice", 18, 90));
students.add(new Student("Bob", 19, 85));
classInfo.setStudents(students);
// 将对象转换为Json格式
String jsonString = mapper.writeValueAsString(classInfo);

Gson示例

Gson gson = new Gson();
// 创建班级信息
ClassInfo classInfo = new ClassInfo();
classInfo.setClassName("Class A");
classInfo.setTotalStudents(2);
List<Student> students = new ArrayList<>();
students.add(new Student("Alice", 18, 90));
students.add(new Student("Bob", 19, 85));
classInfo.setStudents(students);
// 将对象转换为Json格式
String jsonString = gson.toJson(classInfo);

Fastjson示例

// 创建班级信息
ClassInfo classInfo = new ClassInfo();
classInfo.setClassName("Class A");
classInfo.setTotalStudents(2);
List<Student> students = new ArrayList<>();
students.add(new Student("Alice", 18, 90));
students.add(new Student("Bob", 19, 85));
classInfo.setStudents(students);
// 将对象转换为Json格式
String jsonString = JSON.toJSONString(classInfo);

总结

本文介绍了Java常用的格式化Json工具类:jackson、Gson和Fastjson。我们讲解了它们的基本用法,包括将Java对象序列化为Json格式以及将Json格式反序列化为Java对象。此外,我们还提供了示例代码,希望对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:深入浅析Java常用的格式化Json工具类 - Python技术站

(0)
上一篇 2023年5月26日
下一篇 2023年5月26日

相关文章

  • vs怎么编写java Script项目? VisualStudio创建java Script文件的技巧

    下面是关于如何在 Visual Studio 中编写 JavaScript 项目的攻略。 Visual Studio 创建 JavaScript 项目 首先,打开 Visual Studio,选择“创建新项目”(New Project),然后在弹出的“新建项目”对话框中,选择“JavaScript”类别,然后选择“空白 Node.js Web 应用程序”模板…

    Java 2023年5月26日
    00
  • SpringCloud配置刷新原理解析

    SpringCloud配置刷新是指在不重启服务的情况下动态更新配置的能力。实现这个功能需要用到SpringCloud Config Server和SpringCloud Bus组件的支持。 具体实现过程如下: 配置SpringCloud Config Server 在配置文件中添加以下配置: spring.cloud.config.server.git.ur…

    Java 2023年6月15日
    00
  • JSP页面间传值问题实例简析

    下面是对JSP页面间传值问题实例简析的完整攻略: 1. 问题分析 在使用JSP进行web页面开发的过程中,经常需要使用多个JSP页面来完成相应的业务功能,这时候我们就需要在不同的JSP页面之间传递参数或对象。 JSP页面间传值的情景: 当我们在JSP页面中调用另外一个JSP页面或Servlet时,可能需要将当前页面中的某些数据传递给其它页面或Servlet进…

    Java 2023年6月15日
    00
  • Java多线程模拟电影售票过程

    关于Java多线程模拟电影售票过程的攻略,可以分为以下几个步骤: 确定需求 在开始实现之前,需要首先明确需求。在本例中,我们需要模拟一个电影院售票过程。具体而言,要求程序能够模拟多个售票窗口同时对外售票,每个售票窗口需要从已有的电影票中售出一张票。当电影票售罄时,所有售票窗口需要停止售票。最后,统计每个售票窗口售出的票数以及总票数。 实现思路 在明确需求之后…

    Java 2023年5月26日
    00
  • Midjourney:一步一步教你如何使用 AI 绘画 MJ

    一步一步如何使用 Midjourney 教程:教学怎么用 MJ? 一、Midjourney(MJ)是什么? Midjourney是一款使用文字描述来生成高质量图像的AI绘画工具。这篇文章主要介绍了Midjourney及其用途,并针对Midjourney的使用提供了一些指南。该工具可以帮助人们更快速、更容易地创建图像。 与市场上的其他AI绘画工具相比,Midj…

    Java 2023年4月22日
    00
  • Unicode、UTF-8 和 ISO8859-1区别解析

    让我来讲解一下”Unicode、UTF-8 和 ISO8859-1区别解析”。 什么是 Unicode Unicode是一种由国际组织维护的全球字符集标准。它的目标是支持世界上所有字符集,并成为一种数字化的字符编码方案。 Unicode字符集包括ASCII码字符集,而且还包括通用秒(第0平面)字符,这是其他字符集都没有的。通用多文本字符集,包括汉字字符集(第…

    Java 2023年5月20日
    00
  • 详解Maven安装教程及是否安装成功

    下面是详细讲解“详解Maven安装教程及是否安装成功”的完整攻略。 1. 安装JDK 在安装Maven之前,需要先安装JDK,因为Maven是基于Java的,所以JDK必须先安装好。可以在Oracle官网下载JDK,安装过程中需要注意选择合适的版本。 2. 下载Maven 从Maven官网下载Maven,下载页面中有两个版本分别为源码版本和二进制版本。如果你…

    Java 2023年5月20日
    00
  • maven assembly打包生成Java应用启动脚本bat和sh的方法

    下面是详细讲解“maven assembly打包生成Java应用启动脚本bat和sh的方法”的完整攻略。 1. 简介 Maven 是一个基于项目对象模型(POM),可以通过一小段描述文件来管理项目的构建、报告和文档的工具。Maven assembly插件为开发者提供了制作可独立运行的发行版(Distribution)的能力,可以通过配置在项目构建时产生必要的…

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部