深入浅析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日

相关文章

  • Mybatis-Plus接口BaseMapper与Services使用详解

    关于“Mybatis-Plus接口BaseMapper与Services使用详解”的攻略,我来详细讲解一下。 一、前言 Mybatis-Plus是Mybatis的一个增强工具,可以帮助我们快速地开发数据库应用程序。Mybatis-Plus提供了BaseMapper和BaseService两个接口,可以非常方便地进行数据操作。接下来我将对这两个接口进行详细的讲…

    Java 2023年5月20日
    00
  • windows下vscode+vs2019开发JNI的示例

    下面是“Windows下VSCode+VS2019开发JNI的示例”的完整攻略。 背景介绍 Java Native Interface(JNI)是Java和本地C/C++代码交互的一种极其灵活的方式。JNI允许Java应用程序在其运行过程中调用本地C/C++应用程序,并让本地应用程序调用Java应用程序。该过程包括使用Java编写代码,编译Java代码生成J…

    Java 2023年5月26日
    00
  • SpringBoot整合Apache Pulsar教程示例

    SpringBoot整合Apache Pulsar教程示例 本教程将介绍如何使用SpringBoot框架和Apache Pulsar进行消息队列的集成,我们将使用两个不同的示例进行演示,以展示如何将消息发送到Pulsar,并如何从Pulsar中接收消息。 示例1: 发送消息到Pulsar 我们首先来看如何使用SpringBoot和Pulsar在代码中发送消息…

    Java 2023年5月20日
    00
  • 使用JSP实现简单的用户登录注册页面示例代码解析

    一、JSP实现用户登录注册页面示例代码说明 1.创建一个JSP文件,命名为login.jsp,实现用户的登录页面代码。 <!DOCTYPE html> <html> <head> <title>Login Page</title> </head> <body> <h1&…

    Java 2023年6月15日
    00
  • 解决JDBC的class.forName()问题

    解决 JDBC 的 Class.forName() 问题 在使用 JDBC 连接数据库时,我们通常使用的是以下代码: Class.forName("com.mysql.cj.jdbc.Driver"); Connection conn = DriverManager.getConnection(url, username, passwor…

    Java 2023年6月16日
    00
  • java实现打字游戏小程序

    下面是“Java实现打字游戏小程序”的完整攻略: 1. 确定需求 首先我们需要确定我们所要创建的打字游戏小程序的需求。在这个小程序中,我们需要有以下几个功能: 显示随机的英文单词 记录输入单词和正确单词的比较结果 统计用户的输入速度和正确率 结束游戏后可以重新开始游戏 2. 设计界面 接下来我们需要设计程序的界面,可以选择使用Swing或JavaFX等UI框…

    Java 2023年5月23日
    00
  • Java泛型的概念、定义与运行方法分析

    下面是关于Java泛型的完整攻略。 1. Java泛型的概念 Java泛型可以理解为参数化类型的一种表现方式,它是为了解决在类或方法中,处理参数类型不确定的问题而出现的。Java泛型机制的运作就是在编译期间通过类型擦除来实现的,它可以确保程序员在编译时期间对类型进行校验,让代码更加健壮和安全。 2. Java泛型的定义 Java泛型使用尖括号 <&gt…

    Java 2023年5月26日
    00
  • Java jdbc批量多线程读取CVS文件入库

    Java jdbc批量多线程读取CSV文件并入库,可以分为以下步骤: 读取CSV文件:使用开源库OpenCSV或者Apache Commons CSV都可以实现。读取CSV文件时可以使用多线程处理提高效率,可以通过将文件划分为多个小文件,使用多个线程并发读取来实现。 数据库连接:使用JDBC连接数据库,并获取数据库连接对象Connection。可以使用数据库…

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