使用 Jackson 将通用类序列化为 JSON

2023-12-26

我有一个代表调查问卷的对象结构,我需要序列化为 JSON。 该结构的一类是 OpenQuestion,该类使用带有两个参数的泛型。 当使用的其中一种类型是 Date 时,问题就开始了,日期序列化错误,比如 long。

班级代码:

public class OpenQuestion <valueType,validationType> extends AbstractQuestion implements    Serializable {
    private valueType value;
    private validationType minValue;
    private validationType maxValue;
    ...
}

我了解了如果哈希映射始终使用日期,如何序列化哈希映射中的日期,但在本例中,我使用带有字符串、整数或日期的类。

有什么想法可以解决吗? 谢谢


您可以添加一个JsonTypeInfo对此的注释。有两种使用方法:

  • 让它自动向您的对象添加类型注释,以便它知道将其反序列化为什么。
  • 添加自定义类型解析器来为您处理此问题。

第一个会让你的 JSON 变得丑陋,但只需要很少的额外代码,并且不会强迫你创建自定义序列化器。后者更困难,但会产生更干净的 JSON。总体而言,问题部分在于您的其中一种类型未在 JSON(日期)中建模,因此您可能需要将其序列化为 JSON 文件中的整数或字符串类型。

前一个选项看起来有点像这样:

@JsonTypeInfo( use = Id.CLASS, include = As.WRAPPER_PROPERTY )
private valiationType minValue;

This should编码一个字符串值,如下所示:

{ __type = "java.lang.String", value = "Hello, World" }

不保证其准确性,因为这主要来自记忆!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Jackson 将通用类序列化为 JSON 的相关文章

  • JTree 节点不会被直观地选择

    不知何故 我无法为我的 JTree 节点启用 选择突出显示 我正在我的项目中使用自定义单元格渲染器 这很可能导致此问题 这是完整的渲染器类代码 protected class ProfessionTreeCellRenderer exten
  • 有没有好的方法来解析用户代理字符串?

    我有一个Java接收模块User Agent来自最终用户浏览器的字符串的行为需要略有不同 具体取决于浏览器类型 浏览器版本甚至操作系统 例如 FireFox 7 0 Win7 Safari 3 2 iOS9 我明白了User Agent由于
  • 如何对 IntStream 进行逆序排序

    我正在使用 txt 文件读取数字BufferedReader 我想颠倒该流中元素的顺序 以便在收集它们时 它们将从最高到最低排列 我不想在构建数组后进行排序 因为我不知道其中可能有多少元素 我只需要最高的 N 个元素 in new Buff
  • Java 泛型/类型调度问题

    考虑以下程序 import java util List import java util ArrayList public class TypeTest public static class TypeTestA extends Type
  • Android - 除了普通 SSL 证书之外还验证自签名证书

    我有一个通过 SSL 调用 Web 服务的 Android 应用程序 在生产中 我们将拥有由受信任的 CA 签名的普通 SSL 证书 但是 我们需要能够支持自签名证书 由我们自己的 CA 签名 我已经成功实施了接受自签名证书的建议解决方案
  • spring - 强制 @Autowired 字段的 cglib 代理

    我有混合堆栈 EJB 和 Spring 为了将 Spring 自动装配到 EJB 我使用SpringBeanAutowiringInterceptor 不确定这是否会影响我遇到的问题 在尝试通过以下方式自动装配 bean 时 Scope p
  • 场景生成器删除 fxml 文件中的导入

    我使用场景构建器 Gluon Scene Builder JavaFX Scene Builder 8 1 1 来创建应用程序的 UI 并使用 Eclipse 开发 JavaFX 现在 每次我在场景生成器中保存某些内容时 它都会从 fxml
  • 所有junit测试后的清理

    在我的项目中 我必须在所有测试之前进行一些存储库设置 这是使用一些棘手的静态规则来完成的 然而 在所有测试之后我不知道如何进行清理 我不想保留一些神奇的静态数字来引用所有测试方法的数量 我应该一直维护它 最受赞赏的方法是添加一些侦听器 该侦
  • Java替换特定字符

    这是我在这个网站上的第一个问题 所以我会尽量不要成为一个十足的菜鸟 我目前正在用java 创建刽子手游戏 所以我问你的问题是我们是否被赋予了 幽灵 这个词 并将 Ghost 替换为 hiddenWord ghost length for i
  • 使用 java 按电子邮件发送日历邀请

    我正在尝试使用 java 发送每封电子邮件的日历邀请 收件人收到电子邮件 但不会显示接受或拒绝的邀请 而是将该事件自动添加到他的日历中 我正在使用 ical4j jar 构建活动 邀请 private Calendar getInvite
  • 使用 Guava 联合两个 ImmutableEnumSets

    我想联合两个ImmutableEnumSets来自番石榴 这是我的尝试 public final class OurColors public enum Colors RED GREEN BLUE YELLOW PINK BLACK pub
  • @EnableTransactionManagement 的范围是什么?

    我试图了解正确的放置位置 EnableTransactionManagement多个 JavaConfig 上下文的情况下的注释 考虑以下场景 我在 JPAConfig java 和 AppConfig java 中有 JPA 配置以及一组
  • 两个日期之间间隔 15 分钟 javascript

    问题 我需要将两个日期 时间戳之间的所有 15 分钟时隙 日期格式 2016 08 10 16 00 00 创建为 HH mm 格式的数组 其中分钟限制为 00 15 30 45 示例 中午 12 30 到下午 2 30 将 gt 12 3
  • 让JScrollPane控制多个组件

    对于我的应用程序 我正在设计一个脚本编辑器 目前我有一个JPanel其中包含另一个JPanel保存行号 位于左侧 以及JTextArea用于允许用户输入代码 位于右侧 目前 我已经实施了JScrollPane on the JTextAre
  • 如何使用 Mockito 和 Junit 模拟 ZonedDateTime

    我需要模拟一个ZonedDateTime ofInstant 方法 我知道SO中有很多建议 但对于我的具体问题 到目前为止我还没有找到任何简单的解决办法 这是我的代码 public ZonedDateTime myMethodToTest
  • OpenJDK 版本控制

    上下文 我想确保我们系统上安装的 Java 不受 CVE 2022 21449 的影响 java version 给出 openjdk version 11 0 7 2020 04 14 LTS OpenJDK Runtime Enviro
  • 来自客户端的超时 Web 服务调用

    我正在使用 RestEasy 客户端调用网络服务 一项要求是 如果调用运行时间超过 5 秒 则中止 超时调用 我如何使用 RestEasy 客户端实现这一目标 我只看到服务器端超时 即如果在一定时间内未完成请求 Rest Easy 网络服务
  • 重写Object类的finalize()方法有什么用?

    据我所知 在java中如果我们想手动调用垃圾收集器 我们可以执行System gc 1 我们在重写的finalize 方法中做了哪些操作 2 如果我们想手动调用JVM垃圾收集器 是否需要重写finalize 方法 我们在重写的 Finali
  • 通用类不会将委托调用转发给具体子类

    鉴于以下情况 protocol EntityType var displayString String get extension String EntityType var displayString String return self
  • 尝试使用带有有效购买令牌的 Java Google Play Developer API v3 检索应用内购买信息时出现错误请求(无效值)

    当使用 Java Google Play Developer API 版本 3 并请求有效购买令牌的购买信息时 我收到以下异常 API 调用返回 400 Bad Request 响应以及以下消息 code 400 errors domain

随机推荐

  • Redis 中高效的索引类型操作

    我正在尝试在 Redis 中创建一组索引 用于执行 AND 操作 像这样 inx 头发颜色 金发 set key1 key2 key3 inx 眼睛颜色 蓝色 设置 key1 key2 我可以使用sinter找到所有金发蓝眼睛的钥匙 我有这
  • RSA_private_加密总是失败

    我正在学习在我的程序中使用 OpenSSL 库 在代码中 我生成一个私钥 并立即使用该密钥加密消息 但总是失败 请帮助我 private key RSA generate key RSA KEY LENGTH RSA 3 NULL NULL
  • 如何更改 SwitchCompat 的轨道颜色

    我尝试使用以下链接来更改 SwitchCompat 的颜色 如何更改 SwitchCompat 的颜色 https stackoverflow com questions 26714864 how to change the color o
  • 如果不存在图像则显示默认图像

    我在 Centos 5 上运行 Apache 我想实现重写规则 当用户尝试访问文件夹中的图像时 var site com html image products 该规则应该检查图像是否存在 如果不存在 我想要 var site com ht
  • 如何为 WinForms 应用程序创建 MSIX 包?

    我正在尝试转移到 MSIX 来安装我们的应用程序 该应用程序目前通过 ClickOnce 安装部署给我们的客户 如果有更新 则需要在启动时进行更新 它是一个 Net Framework 4 7 2 WinForms 应用程序 我有点不知道如
  • 如何使用 Kaminari (或 will_paginate)gem 对数组的哈希值进行分页

    我现在已经设法找到解决方法 现在 索引操作在调用页面之前有一个 订单 子句 然后按日期对餐食进行排序和分组 接下来是 hackey 位 total pages 和 pages 在视图中用于提供分页链接 因为内置帮助器不适用于 meals 返
  • 拥有“(a -> b) -> b”是否等同于拥有“a”?

    在纯函数式语言中 您可以对值执行的唯一操作就是对其应用函数 换句话说 如果你想用 type 的值做任何有趣的事情a你需要一个具有类型的函数 例如 f a gt b然后应用它 如果有人递给你 flip apply a与类型 a gt b gt
  • 使用鼠标从视频上的矩形设置 ROI

    我有视频 当程序运行时 视频的第一帧被视为图像 并且允许用户在图像上绘制矩形 绘制矩形后 用户必须右键单击图像来确认矩形 当鼠标右键单击时 图像消失 视频开始播放 并在其上绘制矩形 我能够完美地绘制矩形 但无法将该矩形设置为 ROI 我想要
  • 如何使用 boto3 将文件上传到 Amazon Glacier Deep Archive

    我已成功将文件上传到 Glacier 但我想直接上传到 Deep Archive 我搜索了文档 但没有发现如何设置存储类别DEEP ARCHIVE直接地 您可以使用put object 其中有一个StorageClass参数 或者你可以使用
  • 为什么iOS SDK和iOS操作系统版本会互相影响?或者:什么是 iOS SDK?

    EDIT 下面 H2CO3 的答案让我几乎高兴 但事实并非如此 解释一件事 为什么在构建时会出现运行时异常 针对 SDK6 的应用程序 UIPageViewController 需要一个子控制器 在将其添加到父控制器之前 但在构建时则不然
  • 在 Java 中组合数组

    在下面的代码中 我需要读取五个学生姓名的列表以及每个学生五个测验的分数 这会将姓名加载到 String 类型的 ArrayList 中 并将测验分数加载到 Integer 类型的 ArrayList 中 我已经通过两个不同的 ArrayLi
  • 评价我非法状态例外

    正在开发给我评分功能 在这方面遇到问题 我已经在名为 RateUss 的片段中编写了 Rate me 函数代码 但问题是 我没有启动该部分代码的确切位置 因此用户在导航视图中单击 速率 按钮 因此会出现此速率对话框 import andro
  • 优化 Google 脚本以隐藏列

    这两个脚本非常慢 我处理的数据集大约有 32 列 x 1000 行 增长速度相当快 我读过甚至使用过像数组一样处理数据的代码 这样你就可以只调用一次谷歌服务 但我不确定这如何帮助我解决这种情况 我需要根据使用谷歌表格的人隐藏某些列 这是实际
  • 带有两个行终止符的批量插入

    我正在尝试导入一个文本文件 因此结果只是一列的单独行中的单词 例如一段文字 你好妈妈 我们再见面 应该给出5条记录 Hello Mom we meet again 我尝试用以下方法来完成此任务BULK INSERT with ROWTERM
  • 线程本地存储可以被伪造/黑客攻击吗?

    我发现自己有点进退两难 我有一个大型应用程序 其中有 Google 的 V8 javascript 引擎 一些调用是在 UI 线程上对 V8 引擎进行的 为了像大家建议的那样对用户友好 一些长时间操作在单独的线程上运行 而不挂起 UI 线程
  • 应用程序如何确定其是否由于 Voip Push 而从终止状态启动?

    注意 这个问题是关于VoiP推送的 不是关于普通推送的 注意2 问题不是关于如何设置应用程序来接收 Voip 推送 请正确阅读它实际询问的内容 如果应用程序终止并且 Voip 推送到达 则 didFinishLaunchingWithOpt
  • 未知的 CS1003 错误

    我无法编译我的项目以在实体框架中进行代码优先迁移超过某个点 我正在从 xml 中读取值来填充表 我有以下代码 EnrolmentProgramStartDate var programQuery from r in context Enro
  • 我怎样才能让机器人自己变聋?

    我目前正在尝试让机器人在加入语音频道后立即将其震耳欲聋 我试过了 client ws voice setSelfDeaf true 我也被告知要使用 client ws send 但我不知道如何使用它 我有什么办法可以做到吗 client
  • 从终端杀死 iOS 模拟器

    我试图从终端控制台终止 iOS 模拟器 在 Jenkins 中集成自动 UI 测试所需 但每次我尝试以下命令时 killall SimulatorBridge a prompt waiting for action gets display
  • 使用 Jackson 将通用类序列化为 JSON

    我有一个代表调查问卷的对象结构 我需要序列化为 JSON 该结构的一类是 OpenQuestion 该类使用带有两个参数的泛型 当使用的其中一种类型是 Date 时 问题就开始了 日期序列化错误 比如 long 班级代码 public cl