当前位置: 首页 > 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 中的泛型深层对象。

相关文章:

java反序列化泛型中json对象

使用 jackson的objectMapper 来实现 import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMa…...

Docker Compose一键管理容器

可以一键批量管理docker的容器。将所有需要创建的容器定义在compose配置文件中&#xff0c;通过一个命令一键可以创建并运行这些容器&#xff0c;而不需要一个一个启动。可以批量启动停止服务。 安装 #安装Docker-Compose并安装到/usr/local/bin/docker-compose curl -L &quo…...

API接口文档利器:Swagger 和 接口调试利器:Postman

2.接口相关工具 2.1API接口文档利器&#xff1a;Swagger 2.1.1Swagger介绍 Swagger 是一个规范和完整的框架&#xff0c;用于生成、描述、调用和可视化 RESTful 风格的 Web 服务 (https://swagger.io/)。 它的主要作用是&#xff1a; 使得前后端分离开发更加方便&#xff0…...

Redis手动实现分布式锁-Demo

1、pom文件依赖 <!--引入Redis操作依赖--> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId> </dependency> 2、具体实现 package com.xch;import org.spring…...

BBS项目day04 文章详情页、点赞点菜、评论功能(根评论和子评论)、评论分页之刷新评论页面

一、路由 from django.contrib import admin from django.urls import path, re_path from app01 import views from django.views.static import serve from django.conf import settingsurlpatterns [path(admin/, admin.site.urls),# 注册path(register/, views.register)…...

【带着学Pytorch】1、pytorch的安装与入门

一、介绍与安装 1.1. pytorch优点: 上手简单:掌握语法和深度学习的概念,尤其是Numpy的使用与python的list切片有共同性。代码灵活:基本调用封装好的模块,动态图使编写更加灵活资源多: 硬件,软件,文档资料都很多。容易调试:动态运行在调试中可以观察数据的变化是否符…...

smartbi token回调获取登录凭证漏洞

2023年7月28日Smartbi官方修复了一处权限绕过漏洞。未经授权的攻击者可利用该漏洞&#xff0c;获取管理员token&#xff0c;完全接管管理员权限。 于是研究了下相关补丁并进行分析。 0x01分析结果 依据补丁分析&#xff0c;得到如下漏洞复现步骤 第一步&#xff0c;设置Engi…...

SQL注入之堆叠查询

文章目录 堆叠查询是什么&#xff1f;堆叠查询修改所有用户密码堆叠查询删除数据库恢复数据库 堆叠查询是什么&#xff1f; 在SQL中&#xff0c;分号;是用来表示一条sql语句的结束。试想一下我们在; 结束一个sql语句后继续构造下一条语句&#xff0c;会不会一起执行&#xff1f…...

java-JVM 类加载机制

JVM 类加载机制 JVM 类加载机制分为五个部分&#xff1a;加载&#xff0c;验证&#xff0c;准备&#xff0c;解析&#xff0c;初始化&#xff0c;下面我们就分别来看一下这五个过程。 1.1. 加载 加载是类加载过程中的一个阶段&#xff0c;这个阶段会在内存中生成一个代表这…...

前端面试:【网络协议与性能优化】提升Web应用性能的策略

嗨&#xff0c;亲爱的Web开发者&#xff01;构建高性能的Web应用是每个开发者的梦想。本文将介绍一些性能优化策略&#xff0c;包括资源加载、懒加载和CDN等&#xff0c;以帮助你提升Web应用的性能。 1. 性能优化策略&#xff1a; 压缩资源&#xff1a; 使用Gzip或Brotli等压缩…...

前端面试:【React】构建现代Web的利器

嘿&#xff0c;亲爱的React探险家&#xff01;在前端开发的旅程中&#xff0c;有一个神奇的库&#xff0c;那就是React。React是一个用于构建现代Web应用的强大工具&#xff0c;它提供了组件化开发、状态管理、生命周期管理和虚拟DOM等特性&#xff0c;让你的应用开发变得更加高…...

使用mysql:5.6和 owncloud 镜像,构建一个个人网盘。

1、使用mysql:5.6和 owncloud 镜像&#xff0c;构建一个个人网盘。 拉取mysql:5.6和owncloud的镜像和生成实例 [rootlocalhost ~]# docker pull mysql:5.6 [rootlocalhost ~]# docker pull ownclound [rootlocalhost ~]# docker run -d --name mydb1 --env MYSQL_ROOT_PASSWO…...

k8s发布应用

前言 首先以SpringBoot应用为例介绍一下k8s的发布步骤。 1.从代码仓库下载代码&#xff0c;比如GitLab&#xff1b; 2.接着是进行打包&#xff0c;比如使用Maven&#xff1b; 3.编写Dockerfile文件&#xff0c;把步骤2产生的包制作成镜像&#xff1b; 4.上传步骤3的镜像到…...

微信小程序教学系列(4)

微信小程序教学系列 第四章&#xff1a;小程序优化与调试 1. 性能优化技巧 在开发微信小程序时&#xff0c;我们可以采取一些性能优化技巧&#xff0c;以提升小程序的性能表现和用户体验。以下是一些常用的性能优化技巧&#xff1a; 减少网络请求&#xff1a;尽量合并网络请…...

Netty核心源码解析(三)--NioEventLoop

NioEventLoop介绍 NioEventLoop继承SingleThreadEventLoop,核心是一个单例线程池,可以理解为单线程,这也是Netty解决线程并发问题的最根本思路--同一个channel连接上的IO事件只由一个线程来处理,NioEventLoop中的单例线程池轮询事件队列,有新的IO事件或者用户提交的task时便执…...

Vue2学习笔记のVue核心

目录 Vue核心初识VueVue模板语法数据绑定el与data的两种写法MVVM模型数据代理Object.defineProperty方法何为数据代理Vue中的数据代理 事件处理事件的基本使用事件修饰符键盘事件 计算属性姓名案例_插值语法实现姓名案例_methods实现姓名案例_计算属性实现姓名案例_计算属性简写…...

把matlab的m文件打包成单独的可执行文件

安装Matlab Compiler Adds-on在app里找到Application Compiler 选择要打包的文件matlab单独的运行程序的话需要把依赖的库做成runtime. 这里有两个选项. 上面那个是需要对方在联网的情况下安装, 安装包较小.下面那个是直接把runtime打包成安装程序, 大概由你的程序依赖的库的多…...

redis 6个节点(3主3从),始终一个节点不能启动

redis节点&#xff0c;始终有一个节点不能启动起来 1.修改了配置文件 protected-mode no&#xff0c;重启 修改了配置文件 protected-mode no&#xff0c;重启redis问题依然存在 2、查看/var/log/message的redis日志 Aug 21 07:40:33 redisMaster kernel: Out of memory: K…...

单体架构 Monolithic Architecture

单体架构&#xff08;Monolithic Architecture&#xff09; 单体架构是一种传统的软件架构模式&#xff0c;其中整个应用程序被构建为一个单一、完整的代码库和部署单元。 在单体架构中&#xff0c;所有的功能、模块和组件都打包在一起&#xff0c;通常使用同一种编程语言和技…...

HCIP的STP总结

目录 一、802.1D 一个交换网络内仅存在一棵生成树实例&#xff1b; 二、PVST cisco私有 基于vlan的生成树协议 三、PVST 在PVST的基础&#xff0c;兼容802.1q的trunk封装&#xff1b;且设计了部分的加速&#xff1b; 四、快速生成树 五、MSTP/MST/802.1S …...

用emWin定时器在STM32上做个简易秒表:从对话框UI到后台逻辑的完整实现

用emWin定时器在STM32上实现高精度秒表&#xff1a;从UI设计到多任务协同的工程实践 在嵌入式GUI开发中&#xff0c;精确的时间控制往往决定着用户体验的成败。当我们需要在STM32平台上实现一个毫秒级响应的秒表应用时&#xff0c;emWin的窗口管理器定时器(WM_TIMER)便成为连接…...

开源的精神内核:是自由协作,还是商业公司的免费劳动力?

一、溯源&#xff1a;开源精神的三重底色——自由、共享与协作要理解开源的本质&#xff0c;我们必须先回到其精神原点。开源运动自诞生之日起&#xff0c;就携带着自由、共享与协作的基因&#xff0c;这三者共同构成了其精神内核的底色&#xff0c;缺一不可。自由&#xff0c;…...

基于Azure AI Search与OpenAI构建企业级智能问答系统实战指南

1. 项目概述&#xff1a;当企业级搜索遇上生成式AI 如果你正在为如何让公司内部的知识库、产品文档或客服系统变得更“聪明”而头疼&#xff0c;那么你很可能已经听说过或将接触到这个项目&#xff1a; Azure-Samples/azure-search-openai-demo 。这不仅仅是一个简单的代码示…...

别再让电机烧了!聊聊工业设备中三相电源保护的两种经典电路设计与选型

工业三相电机保护电路设计实战&#xff1a;从原理到工程落地 在空压机房嘈杂的轰鸣声中&#xff0c;老王师傅正对着烧毁的电机摇头叹气——这已经是本月第三台因电源故障报废的设备。类似场景在工业现场屡见不鲜&#xff0c;统计显示超过40%的电机故障源于电源异常&#xff0c;…...

基于大语言模型的私有化AI健康助手:Open Health Agent设计与实践

1. 项目概述&#xff1a;一个真正属于你的AI健康数据管家 最近几年&#xff0c;我自己的健康数据越来越“散装”了。体重秤的数据在App A里&#xff0c;跑步机的记录在App B里&#xff0c;偶尔在微信上跟朋友吐槽一句“昨晚又没睡好”&#xff0c;这些碎片化的信息就像沙滩上的…...

STM32F103C8T6驱动MAX30102:从CubeMX配置到心率可视化,一个LED灯带你看懂心跳

STM32F103C8T6驱动MAX30102&#xff1a;从硬件交互到心跳可视化实战 当你第一次看到LED灯随着自己的心跳节奏闪烁时&#xff0c;那种将生物信号转化为物理反馈的奇妙体验&#xff0c;正是嵌入式开发的魅力所在。本文将带你用STM32F103C8T6和MAX30102血氧传感器&#xff0c;打造…...

创业早期如何利用导师与代理模型构建核心支持体系

1. 创业早期支持体系的核心价值在技术驱动的创业领域&#xff0c;尤其是半导体、电子设计自动化这类高门槛行业&#xff0c;一个普遍存在的认知是&#xff1a;只要技术足够领先&#xff0c;产品足够创新&#xff0c;成功便是水到渠成。然而&#xff0c;现实往往比这复杂得多。我…...

2026健康一体机生产厂家选型与厂商能力全景分析

2026健康一体机生产厂家选型与厂商能力全景分析健康一体机是一种集多项健康检测与管理功能于一体的智能终端设备&#xff0c;可快速完成身高、体重、血压、血糖、血氧、心率、心电、体温、BMI、脂肪含量、基础代谢率等基础体征测量。设备支持数据自动记录、建档、上传与智能分析…...

Gentoo Linux 中通过 Overlay 优雅安装 Cursor 二进制编辑器

1. 项目概述与背景如果你是一名 Gentoo Linux 的用户&#xff0c;同时又对 Cursor 这款新兴的 AI 代码编辑器感兴趣&#xff0c;那么你很可能已经遇到了一个经典的 Gentoo 式难题&#xff1a;如何在这样一个以源码编译为核心的发行版上&#xff0c;方便地安装一个官方只提供.de…...

从Siri上车看车载语音交互:技术演进、产业融合与安全设计

1. 项目概述&#xff1a;当Siri首次驶入驾驶舱2012年洛杉矶国际车展上的一则新闻&#xff0c;在当时的汽车与科技圈激起了不小的涟漪。通用汽车宣布&#xff0c;其旗下的雪佛兰品牌将成为首批将苹果Siri语音助手集成到车载信息娱乐系统中的汽车制造商&#xff0c;首发车型包括雪…...