您的位置:

Java实体类转JSON完全解析

在Java开发中,我们通常需要将Java对象序列化为JSON字符串,以便在不同的系统中进行传递和使用。JSON是一种轻量级的数据交换格式,易于阅读和编写,同时也非常流行和广泛使用。在本文中,我们将深入探讨Java实体类转JSON的各个方面,并演示如何使用Java代码将实体类转换为JSON字符串。

一、实体类定义

在演示代码之前,我们需要先定义一个Java实体类。假设我们要表示一个学生的信息,包括姓名、年龄、性别和分数四个属性。可以定义如下的Java实体类:
public class Student {
    private String name;
    private int age;
    private String gender;
    private double score;
    
    // Getter and Setter methods
}
在实际的开发中,Java实体类通常会包含更多的属性和方法,以满足业务需求。这里仅用一个简单的示例来演示Java实体类转JSON的原理和方法。

二、使用Gson库实现Java实体类转JSON

Google提供了一个名为Gson的Java库,可以方便地将Java对象序列化为JSON格式的字符串。在使用Gson库之前,我们需要先将其加入到项目的依赖中。可以通过Maven来添加Gson库:
<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.8.6</version>
</dependency>
接下来,我们就可以使用Gson库将Student对象序列化为JSON字符串了。可以通过如下代码实现:
Gson gson = new Gson();
Student student = new Student();
student.setName("Tom");
student.setAge(18);
student.setGender("M");
student.setScore(80.5);

String json = gson.toJson(student);
System.out.println(json);
运行程序后,输出的结果应该为:
{"name":"Tom","age":18,"gender":"M","score":80.5}
可以看到,Gson库将Student对象序列化为一个符合JSON格式的字符串。 可以通过如下代码将一个JSON字符串反序列化为一个Java对象:
String json = "{\"name\":\"Tom\",\"age\":18,\"gender\":\"M\",\"score\":80.5}";
Student student = gson.fromJson(json, Student.class);
这段代码将JSON字符串转换为一个Java对象,并将其赋值给student变量。

三、自定义序列化和反序列化器

Gson库提供了默认的序列化和反序列化方式,但有时候我们需要自定义序列化和反序列化规则以适应特定的需求。可以通过实现JsonSerializer和JsonDeserializer接口来实现自定义序列化和反序列化器。这里我们假设需要将分数字段按照百分制的方式进行序列化和反序列化。
public class ScoreSerializer implements JsonSerializer<Double> {
    @Override
    public JsonElement serialize(Double src, Type typeOfSrc, JsonSerializationContext context) {
        double score = src * 100;
        return new JsonPrimitive(score);
    }
}

public class ScoreDeserializer implements JsonDeserializer<Double> {
    @Override
    public Double deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
        double score = json.getAsDouble() / 100;
        return score;
    }
}
在定义了自定义序列化和反序列化器之后,我们需要将其注册到Gson库中。可以通过如下代码实现:
GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder.registerTypeAdapter(Double.class, new ScoreSerializer());
gsonBuilder.registerTypeAdapter(Double.class, new ScoreDeserializer());
Gson gson = gsonBuilder.create();

Student student = new Student();
student.setName("Tom");
student.setAge(18);
student.setGender("M");
student.setScore(0.805);

String json = gson.toJson(student);
System.out.println(json);

Student student2 = gson.fromJson(json, Student.class);
System.out.println(student2.getScore());
运行程序,输出的结果如下:
{"name":"Tom","age":18,"gender":"M","score":80.5}
0.805
可以看到,Gson库使用了自定义的序列化和反序列化器,将分数字段按照百分制的方式进行序列化和反序列化。

四、处理复杂对象

在实际的开发中,我们通常需要处理复杂的Java对象,包括嵌套对象、集合对象等等。Gson库同样支持将复杂的Java对象转换为JSON格式的字符串。 假设我们要表示一个班级的信息,包括班级名称、学生列表等属性。可以定义如下的Java实体类:
public class ClassInfo {
    private String className;
    private List<Student> studentList;
    
    // Getter and Setter methods
}
接下来,我们将创建一个ClassInfo对象,并将其转换为JSON格式的字符串:
ClassInfo classInfo = new ClassInfo();
classInfo.setClassName("Class 1");

List<Student> studentList = new ArrayList<>();
Student student1 = new Student();
student1.setName("Tom");
student1.setAge(18);
student1.setGender("M");
student1.setScore(80.5);
studentList.add(student1);

Student student2 = new Student();
student2.setName("Lucy");
student2.setAge(17);
student2.setGender("F");
student2.setScore(90.0);
studentList.add(student2);

classInfo.setStudentList(studentList);

String json = gson.toJson(classInfo);
System.out.println(json);
输出的结果如下:
{"className":"Class 1","studentList":[{"name":"Tom","age":18,"gender":"M","score":80.5},{"name":"Lucy","age":17,"gender":"F","score":90.0}]}
可以看到,Gson库将复杂的Java对象转换为了JSON格式的字符串,并递归地将Student对象也转换为了JSON格式的字符串。

五、总结

在Java开发中,将Java对象转换为JSON格式的字符串是一个非常常见的需求。Gson库提供了方便、灵活的方式来实现Java实体类转JSON。除了示例中演示的内容外,Gson库还提供了更多的API和功能,开发者可以根据实际需求进行灵活使用。
Java实体类转JSON完全解析

2023-05-19
core解析json的笔记(c json解析)

本文目录一览: 1、如何解析json中map数据 2、fasterxml.jackson.core.jsonparser.feature是哪个jar包的 3、spring mvc 怎么获取json 4

2023-12-08
印象笔记记录java学习(Java成长笔记)

2022-11-12
java学习笔记(java初学笔记)

2022-11-14
java方法整理笔记(java总结)

2022-11-08
重学java笔记,java笔记总结

2022-11-23
java客户端学习笔记(java开发笔记)

2022-11-14
java笔记,大学java笔记

2022-11-28
java基础知识学习笔记一,Java基础笔记

2022-11-21
json转为java,json转为java实体类

本文目录一览: 1、实际开发中,入参json数组如何转换为java数组 2、json数组转java对象怎么转 3、怎么将json对象转换成一个java对象 实际开发中,入参json数组如何转换为jav

2023-12-08
java笔记,尚硅谷java笔记

2022-12-01
发篇java复习笔记(java课程笔记)

2022-11-09
java把实体类转成json(java将实体类转为json)

本文目录一览: 1、java对象实体与json之间的转换 2、java实体类怎么转换成json。 3、java怎么把数据转成json 数组 4、如何将数据实体转换为 JSON 字符串 5、java中怎

2023-12-08
使用java将json字符串转换成实体类,java json

2023-01-04
java包笔记,Java语言包

2022-11-18
从json生成java实体类,java根据json生成实体类

本文目录一览: 1、求Xstream把这段json解析并生成java实体的代码 2、怎样把JSON对象快速的转成java对象 3、有没有将json直接转换生成Java类的工具软件 4、如何从JSON数

2023-12-08
java将实体类转化为json(java生成实体类)

本文目录一览: 1、java对象实体与json之间的转换 2、java 实体类转换成json报错,请指教! 3、java实体类怎么转换成json。 4、如何将数据实体转换为 JSON 字符串 5、ja

2023-12-08
python课堂整理32(python笔记全)

2022-11-12
json解析到java(json解析到创建实体内部类)

本文目录一览: 1、怎样把JSON对象快速的转成java对象 2、java 如何解析JSON 3、json解析,java该如何解析啊?? 4、如何java解析json数组 5、Java解析json数据

2023-12-08
java将实体类集合转为json,java返回实体类

2022-11-27