java fastjson2将 map、实体类、list等 类型转换为JSON介绍

devtools/2025/1/16 3:21:13/

Fastjson2 提供了强大的类型转换功能,可以方便地将 JSON 字符串解析为 Java 对象、集合类型,或者其他自定义类型。这些功能使得 Fastjson2 在 JSON 数据的处理上更为灵活和高效。下面详细介绍 Fastjson2 的类型转换方法和相关用法。

1. 基本的类型转换

1.1 将 JSON 字符串转换为 Java 对象

通过 JSON.parseObject() 方法,你可以轻松地将 JSON 字符串转换为 Java 对象。该方法支持将 JSON 数据映射为 Java 对象、ListMap 等类型。

示例:转换 JSON 字符串为 Java 对象
java">import com.alibaba.fastjson2.JSON;public class Fastjson2Example {public static void main(String[] args) {String jsonString = "{\"name\":\"John\", \"age\":25}";// 将 JSON 字符串转换为 Java 对象Person person = JSON.parseObject(jsonString, Person.class);System.out.println(person.getName()); // 输出: JohnSystem.out.println(person.getAge());  // 输出: 25}
}class Person {private String name;private int age;// Getters and Setterspublic 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; }
}
1.2 将 JSON 字符串转换为 Map

如果你不需要一个特定的 Java 类,直接将 JSON 字符串解析为 Map 类型也是非常方便的。

示例:将 JSON 字符串转换为 Map
java">import com.alibaba.fastjson2.JSON;
import java.util.Map;public class Fastjson2Example {public static void main(String[] args) {String jsonString = "{\"name\":\"John\", \"age\":25}";// 将 JSON 字符串转换为 MapMap<String, Object> map = JSON.parseObject(jsonString, Map.class);// 输出 Map 内容System.out.println(map);  // 输出: {name=John, age=25}}
}
1.3 将 JSON 字符串转换为集合类型(List、Set)

Fastjson2 也可以将 JSON 字符串转换为集合类型,如 ListSet

示例:将 JSON 字符串转换为 List
java">import com.alibaba.fastjson2.JSON;
import java.util.List;public class Fastjson2Example {public static void main(String[] args) {String jsonArrayString = "[{\"name\":\"John\",\"age\":25}, {\"name\":\"Jane\",\"age\":28}]";// 将 JSON 数组字符串转换为 ListList<Person> personList = JSON.parseArray(jsonArrayString, Person.class);// 输出 List 内容for (Person person : personList) {System.out.println(person.getName() + " - " + person.getAge());}}
}

2. 转换为不同类型的 JSON 数据

2.1 将 Java 对象转换为 JSON 字符串

通过 JSON.toJSONString() 方法,可以将 Java 对象转换为 JSON 字符串。

示例:将 Java 对象转换为 JSON 字符串
java">import com.alibaba.fastjson2.JSON;public class Fastjson2Example {public static void main(String[] args) {Person person = new Person();person.setName("John");person.setAge(25);// 将 Java 对象转换为 JSON 字符串String jsonString = JSON.toJSONString(person);System.out.println(jsonString);  // 输出: {"name":"John","age":25}}
}
2.2 将 Map 转换为 JSON 字符串

如果你有一个 Map 类型的数据,可以直接将其转换为 JSON 字符串。

示例:将 Map 转换为 JSON 字符串
java">import com.alibaba.fastjson2.JSON;
import java.util.Map;
import java.util.HashMap;public class Fastjson2Example {public static void main(String[] args) {Map<String, Object> map = new HashMap<>();map.put("name", "John");map.put("age", 25);// 将 Map 转换为 JSON 字符串String jsonString = JSON.toJSONString(map);System.out.println(jsonString);  // 输出: {"name":"John","age":25}}
}
2.3 将集合类型(List、Set)转换为 JSON 字符串

Fastjson2 也支持将集合类型(如 ListSet)转换为 JSON 字符串。

示例:将 List 转换为 JSON 字符串
java">import com.alibaba.fastjson2.JSON;
import java.util.ArrayList;
import java.util.List;public class Fastjson2Example {public static void main(String[] args) {List<Person> personList = new ArrayList<>();personList.add(new Person("John", 25));personList.add(new Person("Jane", 28));// 将 List 转换为 JSON 字符串String jsonString = JSON.toJSONString(personList);System.out.println(jsonString);  // 输出: [{"name":"John","age":25},{"name":"Jane","age":28}]}
}

3. 高级类型转换

3.1 使用自定义的 TypeReference 进行复杂类型转换

Fastjson2 支持使用 TypeReference 进行复杂类型的反序列化,如解析带泛型的类型。你可以通过 TypeReference 来转换为包含泛型的 Java 类型,如 List<T>Map<K, V>

示例:使用 TypeReference 进行复杂类型转换
java">import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.TypeReference;import java.util.List;public class Fastjson2Example {public static void main(String[] args) {String jsonString = "[{\"name\":\"John\",\"age\":25}, {\"name\":\"Jane\",\"age\":28}]";// 使用 TypeReference 进行复杂类型转换List<Person> personList = JSON.parseObject(jsonString, new TypeReference<List<Person>>() {});for (Person person : personList) {System.out.println(person.getName() + " - " + person.getAge());}}
}
3.2 解析嵌套的 JSON 对象和数组

对于嵌套的 JSON 对象和数组,Fastjson2 允许你在转换时嵌套不同的 Java 类型。

示例:解析嵌套 JSON 对象和数组
java">import com.alibaba.fastjson2.JSON;public class Fastjson2Example {public static void main(String[] args) {String jsonString = "{\"name\":\"John\",\"address\":{\"city\":\"Anytown\",\"street\":\"123 Main St\"}, \"phones\":[\"123-456-7890\", \"987-654-3210\"]}";// 将嵌套的 JSON 字符串转换为 Java 对象PersonWithAddress person = JSON.parseObject(jsonString, PersonWithAddress.class);System.out.println(person.getName());  // 输出: JohnSystem.out.println(person.getAddress().getCity());  // 输出: AnytownSystem.out.println(person.getPhones());  // 输出: [123-456-7890, 987-654-3210]}
}class PersonWithAddress {private String name;private Address address;private List<String> phones;// Getters and Setterspublic String getName() { return name; }public void setName(String name) { this.name = name; }public Address getAddress() { return address; }public void setAddress(Address address) { this.address = address; }public List<String> getPhones() { return phones; }public void setPhones(List<String> phones) { this.phones = phones; }
}class Address {private String city;private String street;// Getters and Setterspublic String getCity() { return city; }public void setCity(String city) { this.city = city; }public String getStreet() { return street; }public void setStreet(String street) { this.street = street; }
}
3.3 转换自定义类型

Fastjson2 还允许你通过 @JSONField 注解来自定义字段的类型转换。

示例:自定义类型转换
java">import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.annotation.JSONField;public class Fastjson2Example {public static void main(String[] args) {String jsonString = "{\"name\":\"John\", \"dateOfBirth\":\"1995-05-15\"}";// 将 JSON 字符串解析为 Person 对象,自动将日期字段转换为 Date 类型PersonWithDate person = JSON.parseObject(jsonString, PersonWithDate.class);System.out.println(person.getName());  // 输出: JohnSystem.out.println(person.getDateOfBirth());  // 输出: Mon May 15 00:00:00 GMT 1995}
}class PersonWithDate {private String name;@JSONField(format = "yyyy-MM-dd")private Date dateOfBirth;// Getters and Setterspublic String getName() { return name; }public void setName(String name) { this.name = name; }public Date getDateOfBirth() { return dateOfBirth; }public void setDateOfBirth(Date dateOfBirth) { this.dateOfBirth = dateOfBirth; }
}

4. 总结

Fastjson2 提供了丰富的类型转换功能,可以轻松地将 JSON 字符串转换为各种 Java 类型,包括:

  • 基本的 Java 对象(如 Person)。
  • 集合类型(如 ListMap)。
  • 嵌套的 JSON 对象和数组。
  • 使用 TypeReference 处理复杂类型(如带泛型的 List<T>Map<K, V>)。
  • 自定义类型转换(如通过 @JSONField 注解自定义日期格式)。

这些功能使得 Fastjson2 成为一个强大且灵活的 JSON 处理工具,适用于各种场景中的 JSON 数据解析和转换。


http://www.ppmy.cn/devtools/150826.html

相关文章

如何在本地部署大模型并实现接口访问( Llama3、Qwen、DeepSeek等)

如何在本地部署大模型并实现接口访问&#xff08; Llama3、Qwen、DeepSeek等&#xff09; 如何在本地部署大模型并实现接口访问&#xff08; Llama3、Qwen、DeepSeek等&#xff09;模型地址模型下载模型部署指定显卡运行app.py 运行环境requirements 调用接口代码调用 结语 如何…

C#,入门教程(27)——应用程序(Application)的基础知识

上一篇&#xff1a; C#&#xff0c;入门教程(26)——数据的基本概念与使用方法https://blog.csdn.net/beijinghorn/article/details/124952589 一、什么是应用程序 Application&#xff1f; 应用程序是编程的结果。一般把代码经过编译&#xff08;等&#xff09;过程&#…

Scala语言的面向对象编程

Scala语言的面向对象编程 面向对象编程&#xff08;Object-Oriented Programming&#xff0c;OOP&#xff09;是一种编程范式&#xff0c;它使用“对象”来组织代码&#xff0c;这些对象能够包含数据&#xff08;属性&#xff09;以及功能&#xff08;方法&#xff09;。Scala…

HTTPS应用场景与优化实践

HTTPS的应用场景 电子商务&#xff1a;支付页面和订单数据保护&#xff0c;防止用户敏感信息泄露。社交网络&#xff1a;登录验证和个人数据保护&#xff0c;防止账号被盗。政府和企业网站&#xff1a;确保数据传输安全&#xff0c;防止重要信息泄露。搜索引擎优化&#xff1a…

如何定位导致 Django 错误的文件

在 Django 开发中&#xff0c;当发生错误时&#xff0c;定位问题所在的文件和代码行是调试的重要步骤。以下是一些常用的方法和技巧来定位导致 Django 错误的文件&#xff1a; 1、问题背景 在项目中使用了 shrink 工具尝试运行 collect static 时&#xff0c;出现 TemplateSyn…

【蓝牙】win11 笔记本电脑连接 hc-06

文章目录 前言步骤 前言 使用电脑通过蓝牙添加串口 步骤 设置 -> 蓝牙和其他设备 点击 显示更多设备 更多蓝牙设置 COM 端口 -> 添加 有可能出现卡顿&#xff0c;等待一会 传出 -> 浏览 点击添加 hc-06&#xff0c;如果没有则点击 再次搜索 确定 添加成…

Uniapp中实现加载更多、下拉刷新、返回顶部功能

一、加载更多&#xff1a; 在到达底部时&#xff0c;将新请求过来的数据追加到原来的数组即可&#xff1a; import {onReachBottom } from "dcloudio/uni-app";const pets ref([]); // 显示数据function network() {uni.request({url: "https://api.thecatap…

【流程设计】类似钉钉的流程设计功能样式demo

对于一些审批流程&#xff0c;可能会用到这个功能&#xff0c;通过这样一层层的加下来&#xff0c;弄一个审批流程的数组&#xff0c;然后根据这个来审核是否都通过审批&#xff0c;这里是简单的弄一个样式的demo&#xff0c;功能自由发挥 <!DOCTYPE html> <html>…