JavaJson格式化详解

一、Json序列化

Json序列化是指将一个Java对象转化为Json字符串的过程。Json字符串是一种轻量级的数据交换格式,常用于客户端与服务端之间数据传输。

Java提供了多个Json序列化库,比如Gson、Jackson、FastJson等。下面以Gson为例介绍Json序列化的实现。

// 定义一个Java对象
class Person {
    private String name;
    private int age;

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

// 对象转Json字符串
Gson gson = new Gson();
Person person = new Person("张三", 20);
String jsonStr = gson.toJson(person);
System.out.println(jsonStr); // {"name":"张三","age":20}

在上面的例子中,我们使用了Gson库将一个Person对象转换为Json字符串。这里需要注意的是,Person类的属性必须使用private修饰符,否则Gson将无法将其转化为Json字符串。同时,我们也可以使用其他的Json库来实现相同的功能。

二、Json反序列化

Json反序列化是指将一个Json字符串转化为Java对象的过程。与Json序列化相反,Json反序列化常用于服务端接收客户端传来的Json数据。

Java提供了多个Json反序列化库,同样以Gson为例介绍Json反序列化的实现。

// Json字符串转对象
Gson gson = new Gson();
String jsonStr = "{\"name\":\"张三\",\"age\":20}";
Person person = gson.fromJson(jsonStr, Person.class);
System.out.println(person.getName()); // 张三
System.out.println(person.getAge()); // 20

在上面的例子中,我们使用了Gson库将一个Json字符串转化为Person对象。需要注意的是,Json字符串的属性名必须与Java对象的属性名一一对应,这样才能正确地将Json字符串转换为Java对象。同时,我们也可以使用其他的Json库来实现相同的功能。

三、Json格式化

Json格式化是指将一个未格式化的Json字符串按照一定的规则进行格式化,使其更具可读性。Java提供了多个Json格式化工具包,如Jackson、Gson等。

以Gson为例,下面介绍Json格式化的实现。

// 格式化Json字符串
String jsonStr = "{\"name\":\"张三\",\"age\":20}";
Gson gson = new GsonBuilder().setPrettyPrinting().create();
JsonElement je = JsonParser.parseString(jsonStr);
System.out.println(gson.toJson(je)); 
/*
{
  "name": "张三",
  "age": 20
}
*/

在上面的例子中,我们使用了Gson库将一个未格式化的Json字符串按照一定的规则格式化。这里使用了setPrettyPrinting()方法,表示采用默认的格式化方式。同时,我们也可以自定义格式化方式来满足特定的格式化需求。

四、Json转JavaBean

Json转JavaBean是指将一个Json对象或Json字符串转化为JavaBean对象的过程。JavaBean是一个符合JavaBean规范的Java类,其属性需要使用private修饰符,并且提供getter和setter方法,以便于访问和修改该属性。JavaBean主要用于数据传输和业务处理。

下面以Gson为例介绍Json转JavaBean的实现。

// Json字符串转JavaBean
class Student {
    private String name;
    private int age;
    private String[] hobbies;

    // getter和setter方法省略
}

String jsonStr = "{\"name\":\"小明\",\"age\":18,\"hobbies\":[\"游泳\",\"足球\"]}";
Gson gson = new Gson();
Student student = gson.fromJson(jsonStr, Student.class);
System.out.println(student.getName()); // 小明
System.out.println(student.getAge()); // 18
System.out.println(Arrays.toString(student.getHobbies())); // [游泳, 足球]

在上面的例子中,我们使用了Gson库将一个Json字符串转换为JavaBean对象。这里需要注意的是,Json字符串中的属性名必须与JavaBean类的属性名一一对应,否则转换过程会失败。同时,我们也可以使用其他的Json库来实现相同的功能。

五、Json数组转Java集合

Json数组转Java集合是指将一个Json数组转化为Java集合的过程,其中Java集合可以是List、Set或Map等类型。

下面以Gson为例介绍Json数组转Java集合的实现。

// Json数组转Java集合
Gson gson = new Gson();
String jsonStr = "[\"电影\",\"音乐\",\"互联网\"]";
List list = gson.fromJson(jsonStr, new TypeToken<List<String>>(){}.getType());
System.out.println(list); // [电影, 音乐, 互联网]

在上面的例子中,我们使用了Gson库将一个Json数组转化为List集合。这里需要注意的是,我们需要使用new TypeToken<List<String>>(){}.getType()方法获取List<String>类型的泛型,否则转换会失败。同时,我们也可以将Json数组转为其他类型的Java集合。

原创文章,作者:PHNQA,如若转载,请注明出处:https://www.506064.com/n/372647.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
PHNQAPHNQA
上一篇 2025-04-24 06:40
下一篇 2025-04-24 06:40

相关推荐

  • 神经网络代码详解

    神经网络作为一种人工智能技术,被广泛应用于语音识别、图像识别、自然语言处理等领域。而神经网络的模型编写,离不开代码。本文将从多个方面详细阐述神经网络模型编写的代码技术。 一、神经网…

    编程 2025-04-25
  • Linux sync详解

    一、sync概述 sync是Linux中一个非常重要的命令,它可以将文件系统缓存中的内容,强制写入磁盘中。在执行sync之前,所有的文件系统更新将不会立即写入磁盘,而是先缓存在内存…

    编程 2025-04-25
  • Linux修改文件名命令详解

    在Linux系统中,修改文件名是一个很常见的操作。Linux提供了多种方式来修改文件名,这篇文章将介绍Linux修改文件名的详细操作。 一、mv命令 mv命令是Linux下的常用命…

    编程 2025-04-25
  • MPU6050工作原理详解

    一、什么是MPU6050 MPU6050是一种六轴惯性传感器,能够同时测量加速度和角速度。它由三个传感器组成:一个三轴加速度计和一个三轴陀螺仪。这个组合提供了非常精细的姿态解算,其…

    编程 2025-04-25
  • Python安装OS库详解

    一、OS简介 OS库是Python标准库的一部分,它提供了跨平台的操作系统功能,使得Python可以进行文件操作、进程管理、环境变量读取等系统级操作。 OS库中包含了大量的文件和目…

    编程 2025-04-25
  • Java BigDecimal 精度详解

    一、基础概念 Java BigDecimal 是一个用于高精度计算的类。普通的 double 或 float 类型只能精确表示有限的数字,而对于需要高精度计算的场景,BigDeci…

    编程 2025-04-25
  • git config user.name的详解

    一、为什么要使用git config user.name? git是一个非常流行的分布式版本控制系统,很多程序员都会用到它。在使用git commit提交代码时,需要记录commi…

    编程 2025-04-25
  • C语言贪吃蛇详解

    一、数据结构和算法 C语言贪吃蛇主要运用了以下数据结构和算法: 1. 链表 typedef struct body { int x; int y; struct body *nex…

    编程 2025-04-25
  • Python输入输出详解

    一、文件读写 Python中文件的读写操作是必不可少的基本技能之一。读写文件分别使用open()函数中的’r’和’w’参数,读取文件…

    编程 2025-04-25
  • nginx与apache应用开发详解

    一、概述 nginx和apache都是常见的web服务器。nginx是一个高性能的反向代理web服务器,将负载均衡和缓存集成在了一起,可以动静分离。apache是一个可扩展的web…

    编程 2025-04-25

发表回复

登录后才能评论