当前位置: 首页 > news >正文

java反序列化泛型中json对象

使用 jacksonobjectMapper 来实现

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;public config class {private static ObjectMapper objectMapper;static {objectMapper=new ObjectMapper();//忽略反序列化中的一些错误objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);}}

示例

要反序列化 JSON 中的泛型深层对象,你可以使用 JSON 库(如 Jackson 或 Gson)并结合 Java 的 TypeReference 类。以下是使用 Jackson 和 TypeReference 的示例代码:

假设你有一个 JSON 字符串如下,其中包含一个深层的泛型对象:

{"name": "John","age": 30,"list": [{"name": "Alice","age": 25},{"name": "Bob","age": 35}]
}

首先,你需要创建一个 Java 类来表示 JSON 的结构。假设你有一个名为 Person 的类:

public class Person {private String name;private int age;// 构造函数、Getter 和 Setter 略
}

然后,你可以创建一个泛型类来表示包含泛型对象的深层对象:

public class DeepObject<T> {private String name;private int age;private List<T> list;// 构造函数、Getter 和 Setter 略
}

接下来,你可以使用 Jackson 库和 TypeReference 将 JSON 字符串反序列化为 DeepObject 对象:

import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;public class Main {public static void main(String[] args) throws Exception {String json = "{\"name\":\"John\",\"age\":30,\"list\":[{\"name\":\"Alice\",\"age\":25},{\"name\":\"Bob\",\"age\":35}]}";ObjectMapper objectMapper = new ObjectMapper();DeepObject<Person> deepObject = objectMapper.readValue(json, new TypeReference<DeepObject<Person>>() {});System.out.println("Name: " + deepObject.getName());System.out.println("Age: " + deepObject.getAge());List<Person> list = deepObject.getList();for (Person person : list) {System.out.println("Person: " + person.getName() + ", " + person.getAge());}}
}

运行上述代码,你将会看到输出结果:

Name: John
Age: 30
Person: Alice, 25
Person: Bob, 35

这样,你就成功地反序列化了 JSON 中的泛型深层对象。

http://www.lryc.cn/news/136494.html

相关文章:

  • Docker Compose一键管理容器
  • API接口文档利器:Swagger 和 接口调试利器:Postman
  • Redis手动实现分布式锁-Demo
  • BBS项目day04 文章详情页、点赞点菜、评论功能(根评论和子评论)、评论分页之刷新评论页面
  • 【带着学Pytorch】1、pytorch的安装与入门
  • smartbi token回调获取登录凭证漏洞
  • SQL注入之堆叠查询
  • java-JVM 类加载机制
  • 前端面试:【网络协议与性能优化】提升Web应用性能的策略
  • 前端面试:【React】构建现代Web的利器
  • 使用mysql:5.6和 owncloud 镜像,构建一个个人网盘。
  • k8s发布应用
  • 微信小程序教学系列(4)
  • Netty核心源码解析(三)--NioEventLoop
  • Vue2学习笔记のVue核心
  • 把matlab的m文件打包成单独的可执行文件
  • redis 6个节点(3主3从),始终一个节点不能启动
  • 单体架构 Monolithic Architecture
  • HCIP的STP总结
  • Post Robot
  • HTML中,常用的布局方式
  • uboot源码结构
  • c++(8.23)类,this指针,构造函数,析构函数,拷贝构造函数
  • 前端网络相关知识(TCP和UDP的区别, TCP的三次握手)
  • 大数据-玩转数据-Flink营销对账
  • 中英双语对话大语言模型:ChatGLM-6B
  • MES生产报工管理
  • 五、修改官方FreeRTOS例程(STM32F1)
  • pytorch基础实践-数据与预处理
  • Java智慧工地系统源码(微服务+Java+Springcloud+Vue+MySQL)