java对象序列化与反序列化的默认格式和json格式使用示例

Java对象序列化和反序列化是Java中常用的数据交换方式,其中序列化是将Java对象转换为字节流,可以储存到文件或网络流中,反序列化则是将字节流转换为Java对象。在Java中,序列化和反序列化的默认格式是二进制格式,而JSON格式则更加通用并且易于阅读。

默认格式的使用示例

序列化

当我们需要将一个Java对象进行序列化时,我们可以使用 ObjectOutputStream 对象,该对象提供了一个 writeObject 方法,该方法可以将一个对象序列化。

public class Person implements Serializable {
    private String name;
    private int age;

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

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }
}

上述代码中,我们定义了一个人的类 Person,并实现了 Serializable 接口。现在我们希望将一个 Person 对象实例进行序列化:

Person person = new Person("Alice", 25);
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("person.obj"));
oos.writeObject(person);
oos.close();

我们将一个 Person 对象实例进行了序列化,并将其写入到了文件系统中。

反序列化

当我们需要从文件系统或者网络中读取序列化的对象时,我们可以使用 ObjectInputStream 对象进行反序列化操作。该对象提供了一个 readObject 方法,可以反序列化一个对象:

ObjectInputStream ois = new ObjectInputStream(new FileInputStream("person.obj"));
Person person = (Person) ois.readObject();
System.out.println(person.getName()); // 输出:Alice
System.out.println(person.getAge()); // 输出:25
ois.close();

我们使用 ObjectInputStream 对象的 readObject 方法,从文件系统中读取了一个序列化的 Person 对象,并成功反序列化成了一个 Java 对象。

JSON格式的使用示例

JSON 格式是一种轻量级、易于阅读的数据交换格式,其具有以下优点:

  • 易于阅读和编写。
  • 开源的文本格式,独立于语言和平台。
  • 语法简单,易于理解。

在Java中,我们可以使用各种第三方插件来将 Java 对象和 JSON 格式相互转换,其中比较流行的插件有 Google 提供的 Gson 以及阿里巴巴提供的 FastJson。以下是以 Gson 的使用为例的说明:

序列化

使用 Gson 序列化 Java 对象为 JSON 格式,只需要导入相关第三方包,然后通过 Gson 对象的 toJson 方法即可实现。

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;

public class Person {
    private String name;
    private int age;

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

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

Person person = new Person("Alice", 25);
Gson gson = new GsonBuilder().create();
String json = gson.toJson(person);
System.out.println(json); // 输出:{"name": "Alice", "age": 25}

反序列化

使用 Gson 将 JSON 格式反序列化为 Java 对象也非常简单。和序列化一样,只需要使用相关的 Gson 对象即可完成。

String json = "{\"name\": \"Alice\", \"age\": 25}";
Gson gson = new GsonBuilder().create();
Person person = gson.fromJson(json, Person.class);
System.out.println(person.getName()); // 输出:Alice
System.out.println(person.getAge()); // 输出:25

上述代码使用 Gson 对象的 fromJson 方法将 JSON 字符串转换成了 Person 对象,并成功地反序列化了 Java 对象。

总的来说,Java对象序列化和反序列化是 Java 编程中重要的知识点之一。理解其默认的序列化格式和 JSON 格式,可以帮助我们更好地进行对象间数据交换,进而实现更多有价值的编程需求。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java对象序列化与反序列化的默认格式和json格式使用示例 - Python技术站

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

相关文章

  • Struts2 通过ognl表达式实现投影

    下面是详细的讲解: 概述 Struts2 是一个优秀的 Java Web 应用框架,它的表单标签库可以很方便地实现表单的输入和输出。但有时候,我们也需要一些特殊的操作,比如使用投影(projection)来显示指定的数据,此时,ognl 表达式就可以派上用场了。 步骤 1. 配置Struts2引用ognl 在 struts.xml 文件中配置如下: <…

    Java 2023年5月20日
    00
  • java多文件压缩下载的解决方法

    java多文件压缩下载的解决方法 在Java Web开发中,我们经常需要让用户下载多个文件,而将这些文件打包成一个压缩包是很常见的方法。本文将介绍如何在Java Web应用中实现多文件压缩下载功能。 1. 添加相关依赖 你需要添加相关依赖来实现多文件压缩的功能。本文选择使用Apache commons-compress库,添加以下依赖到你的项目中: <…

    Java 2023年5月20日
    00
  • java 解压与压缩文件夹的实例详解

    Java解压与压缩文件夹的实例详解 Java提供了许多用于压缩和解压缩文件的标准API,这些API可以通过java.util.zip包和java.util.jar包来实现。这些API可以让我们在Java中轻松地压缩和解压缩文件,并且在我们需要处理大量文件或需要将文件打包成压缩文件时非常有用。在本文中,我们将详细讲述如何使用Java的压缩和解压缩API。 压缩…

    Java 2023年5月20日
    00
  • Spring单数据源的配置详解

    我来为您详细讲解“Spring单数据源的配置详解”的完整攻略。 Spring单数据源的配置详解 在讲解Spring单数据源的配置之前,我们先来了解一下什么是数据源。数据库数据源是数据库的一个连接池,它负责管理数据库连接,并通过连接池的方式提高数据连接的效率和稳定性。在Spring框架中,我们可以通过配置数据源的方式来实现对数据库的访问。而Spring单数据源…

    Java 2023年5月20日
    00
  • Springboot连接数据库及查询数据完整流程

    下面我将为大家详细讲解“Springboot连接数据库及查询数据完整流程”的完整攻略。 准备工作 首先,需要在pom.xml文件中添加以下依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-st…

    Java 2023年5月20日
    00
  • Springboot入门案例及部署项目的详细过程

    下面我将为你详细讲解“Spring Boot入门案例及部署项目的详细过程”。 Spring Boot入门案例 步骤1:创建Spring Boot项目 首先,在你的开发环境上安装好Java和Maven,并创建一个新的Maven工程。在工程中加入以下依赖: <dependency> <groupId>org.springframework…

    Java 2023年5月15日
    00
  • java获取和设置系统变量问题(环境变量)

    Java作为一门跨平台的编程语言,可以轻松获取和修改与操作系统相关的环境变量,可以用来配置系统设置、路径、代理、个性化等,本文将针对Java如何获取和设置系统变量问题,提供完整的攻略。 获取系统变量 Java提供了System类来访问与系统相关的信息,如获取和设置系统变量。 获取系统变量的方法是使用System.getProperty()函数,该函数有多种签…

    Java 2023年5月24日
    00
  • 详解Java中Thread 和Runnable区别

    当开发多线程程序时,Java中有两种方式可以创建线程:继承Thread类或实现Runnable接口。虽然它们最终实现的目标是相同的,但它们之间仍然存在一些重要区别。本文将详细讲解Thread和Runnable的区别,让您在编写多线程程序时选择最佳方案。 一、继承Thread类 继承Thread类是创建线程的传统方式。这是通过继承Thread类并覆盖其中的ru…

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