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

相关文章

  • Java数据类型转换的示例详解

    Java数据类型转换的示例详解 什么是数据类型转换? 在Java中,我们定义变量时需要指定变量的数据类型。不同的数据类型可以存储不同范围内的数值,例如byte类型可以存储从-128到127的整数,而int类型可以存储更大的整数。在程序中,有时需要将一个数据类型的值转换为另一个数据类型的值,这就叫做数据类型转换。 转换类型 Java中数据类型转换分为隐式类型转…

    Java 2023年5月20日
    00
  • 老生常谈java中的Future模式

    关于Future模式在Java中的应用,以下是详细讲解的攻略: 什么是Future模式 Future模式是一种常用的设计模式,它将一个耗时的操作在后台执行,然后把执行结果返回给调用方。在执行操作的同时,调用方可以继续执行自己的逻辑,等到操作完成时再获取结果,这样可以避免阻塞调用方。 在Java中,Future模式通常使用Java Future接口来实现。该接…

    Java 2023年5月26日
    00
  • 混乱的Java日志体系及集成jar包梳理分析

    混乱的Java日志体系及集成jar包梳理分析是一篇旨在帮助Java开发者理解Java日志体系和集成jar包的文章。本文将围绕Java日志体系的问题、集成jar包的例子、分析Java日志框架的实现等多方面展开讲解。 一、Java日志体系的问题 在Java开发过程中,我们经常需要使用日志来帮助我们进行调试。但是,Java日志体系却十分混乱,不同的日志框架都有着自…

    Java 2023年5月19日
    00
  • springboot添加https服务器的方法

    关于“springboot添加https服务器的方法”的完整攻略,以下是详细步骤和示例说明: 1.获取https证书 首先需要获取一个https证书。可以通过自己生成证书,也可以通过第三方机构购买证书。这里以通过免费的Let’s Encrypt获取证书为例。以下是获取过程: 安装Certbot客户端 Certbot是Let’s Encrypt官方提供的一个证…

    Java 2023年5月23日
    00
  • Java Class.forName()用法和newInstance()方法原理解析

    Java中的Class对象提供了一些强大的机制来处理编译时期未知的类,比如在运行时动态加载并实例化一个类。其中Class.forName()和newInstance()方法是两个非常重要的方法,本文将详细讲解它们的用法和原理。 Java Class.forName()方法 Class.forName()是Java反射机制中的核心方法之一,它可以根据类名动态加…

    Java 2023年5月26日
    00
  • spring security自定义决策管理器

    下面来详细讲解一下“spring security自定义决策管理器”的完整攻略。 什么是决策管理器 Spring Security是一个基于Spring的安全框架,其中涉及到许多安全相关的处理,包括鉴权(Authentication)和授权(Authorization)等。使用Spring Security,我们可以通过配置来管理系统中不同的权限,而决策管理…

    Java 2023年5月20日
    00
  • 一文详解RocketMQ-Spring的源码解析与实战

    摘要:这篇文章主要介绍 Spring Boot 项目使用 rocketmq-spring SDK 实现消息收发的操作流程,同时笔者会从开发者的角度解读 SDK 的设计逻辑。 本文分享自华为云社区《RocketMQ-Spring : 实战与源码解析一网打尽》,作者:勇哥java实战分享。 RocketMQ 是大家耳熟能详的消息队列,开源项目 rocketmq-…

    Java 2023年4月25日
    00
  • Java 随机生成验证码(支持大小写字母、数字、随机字体)的实例

    先介绍一下Java生成验证码的基本流程: 随机生成字符或数字。 使用随机字体样式和大小。 创建画布,设置画布大小、背景色和边框。 在画布上绘制字符和干扰线等图形。 输出验证码图片。 下面我们来看一个完整的Java随机生成验证码的代码示例: package com.example; import java.awt.Color; import java.awt.…

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