当前位置: 首页 > 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 …...

Hunyuan-MT-7B实战教程:OpenWebUI插件开发——添加术语库与记忆功能

Hunyuan-MT-7B实战教程&#xff1a;OpenWebUI插件开发——添加术语库与记忆功能 1. 项目背景与目标 Hunyuan-MT-7B作为腾讯混元开源的70亿参数多语翻译模型&#xff0c;在WMT2025竞赛中斩获30项第一&#xff0c;支持33种语言双向互译&#xff0c;包括5种中国少数民族语言。这…...

解锁智能导航核心:从基础到进阶的路径规划实践指南

解锁智能导航核心&#xff1a;从基础到进阶的路径规划实践指南 【免费下载链接】PathPlanning Common used path planning algorithms with animations. 项目地址: https://gitcode.com/gh_mirrors/pa/PathPlanning 路径规划算法是机器人导航、自动驾驶和游戏AI等领域的…...

嵌入式系统的启动流程与初始化详解

嵌入式系统的启动流程与初始化详解 为什么启动流程如此重要 作为科技创业者&#xff0c;我深知在嵌入式产品开发中&#xff0c;启动流程的设计和优化直接影响产品的用户体验和可靠性。一个快速、稳定的启动流程不仅能提升产品的竞争力&#xff0c;还能减少客户的等待时间&#…...

OpenClaw+nanobot技能开发:从零编写自定义文件处理器

OpenClawnanobot技能开发&#xff1a;从零编写自定义文件处理器 1. 为什么需要自定义文件处理技能 上周我整理项目文档时&#xff0c;遇到了一个典型问题&#xff1a;需要将数百个Markdown文件按照"日期-标题"格式批量重命名。手动操作不仅耗时&#xff0c;还容易出…...

零基础WordPress建站:可视化编辑器推荐(2026版-含下载)

&#x1f645;‍♀️ 零基础学WP建站&#xff0c;怕代码&#xff1f;怕复杂&#xff1f;怕翻车&#xff1f; 2026最新可视化编辑器实测合集来啦✨ 纯干货无链接&#xff0c;全程拖拽操作、所见即所得&#xff0c;小白也能轻松搭出专业网站&#xff0c;告别技术焦虑&#xff0c;…...

NaViL-9B图文理解入门:支持中英文混合提问的实测案例

NaViL-9B图文理解入门&#xff1a;支持中英文混合提问的实测案例 1. 认识NaViL-9B NaViL-9B是一款原生多模态大语言模型&#xff0c;由专业研究机构开发。它最大的特点是能够同时处理文字和图片信息&#xff0c;就像一个能"看图说话"的智能助手。无论是纯文字问题&…...

公司内部业务系统,其实无需专门开发,用免费低代码平台就够了

这段时间陆续试了几款主流低代码工具&#xff0c;整体体验下来&#xff0c;有些平台在免费阶段就已经很好用了。整理了一份我觉得比较值得尝试的清单&#xff0c;分享给同样有需求的人。斑斑AI首先是斑斑AI。它给我最大的感受就是“没有限制”。完全无限制免费这一点非常少见&a…...

用TurtleBot3实测:Navigation2局部代价地图的滚动窗口为何必须用odom坐标系?

TurtleBot3实测&#xff1a;为什么Navigation2局部代价地图必须绑定odom坐标系&#xff1f; 当你在Gazebo中第一次看到TurtleBot3的导航表现时&#xff0c;可能会对局部代价地图&#xff08;Local Costmap&#xff09;的坐标系选择产生疑问。为什么这个实时更新的避障地图要绑定…...

PCB设计实战:数字模拟隔离的元件抉择——从0Ω电阻到磁珠的精准应用

1. 数字模拟隔离的基础原理与挑战 在混合信号电路设计中&#xff0c;数字电路和模拟电路就像两个性格迥异的邻居。数字电路工作时会产生高频开关噪声&#xff0c;就像隔壁装修时的电钻声&#xff1b;而模拟电路对噪声极其敏感&#xff0c;如同正在录音的麦克风。这时候&#xf…...

GTE文本向量助力智能写作:文本分类与情感倾向双重把关

GTE文本向量助力智能写作&#xff1a;文本分类与情感倾向双重把关 1. 智能写作的核心挑战&#xff1a;内容质量的多维评估 在内容创作领域&#xff0c;我们常常面临一个基本矛盾&#xff1a;如何同时保证文本的专业性和情感表达&#xff1f;传统写作辅助工具往往只能解决单一…...