使用 Jackson 反序列化通用类型

2023-11-27

我正在尝试创建一个使用 Jackson 来反序列化 POJO 的类。

看起来像这样...

public class DeserialiserImp<T> implements Deserialiser<T> {

        protected ObjectMapper objectMapper = new ObjectMapper();

        @Override
        public T get(String content, Class clazz) throws IOException {
            return (T) objectMapper.readValue(content, clazz);
        }

        @Override
        public List<T> getList(String content, Class clazz) throws IOException {
            return objectMapper.readValue(content, TypeFactory.collectionType(ArrayList.class, clazz));
        }

    }

我对这个实现有两个问题。

第一个是我将类类型传递到方法中,以便对象映射器知道应该反序列化的类型。使用泛型有更好的方法吗?

另外,在 get 方法中,我将从 objectMapper 返回的对象转换为 T。这看起来特别令人讨厌,因为我必须在这里转换 T,然后我还必须从调用它的方法转换对象类型。

我在这个项目中使用 Roboguice,所以如果我可以通过注入更改类型,然后注释我需要它返回的通用类型的对象,那就太好了。我读到类型文字并想知道它是否可以解决这个问题?


第一个是我将类类型传递到方法中,因此 objectmapper 知道应该反序列化的类型。有没有更好的 使用泛型的方式?

不幸的是不是,这是因为类型擦除。

另外,在 get 方法中,我正在转换从 objectMapper 到 T。这似乎是特别令人讨厌的方式,因为我 必须在这里转换 T 然后我还必须转换对象类型 调用它的方法。

改为这样做:

@Override
public T get(String content, Class<T> clazz) throws IOException {
    return objectMapper.readValue(content, clazz);
}

我在这个项目中使用 Roboguice,所以如果可以的话那就太好了 通过注入改变类型,然后注释该对象 我需要它返回的通用类型。我读到了 TypeLiteral 和 想知道是否可以解决这个问题?

我不太明白你想要实现什么,但既然你无论如何都需要通过课程,那还有可能吗?

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

使用 Jackson 反序列化通用类型 的相关文章

  • 像 Java 这样的静态类型语言中动态方法解析背后的原因是什么

    我对 Java 中引用变量的动态 静态类型和动态方法解析的概念有点困惑 考虑 public class Types Override public boolean equals Object obj System out println i
  • 为什么是 javascript:history.go(-1);无法在移动设备上工作?

    首先 一些背景 我有一个向用户呈现搜索页面 html 表单 的应用程序 填写标准并单击 搜索 按钮后 结果将显示在标准部分下方 在结果列表中 您可以通过单击将您带到新页面的链接来查看单个结果的详细信息 在详细信息页面中 我添加了一个 返回结
  • 从 BroadcastReceiver 类调用活动方法

    我知道我可以做一个内部接收器类来调用接收器中的任何方法 但我的主要活动太大了 要做的事情也很多 因此 我需要一个扩展广播接收器的类 但它不是内部类 并且可以从我的主要活动中调用一种方法 我不知道是否可能 但我的活动是家庭活动和 single
  • 使用片段时应用程序崩溃

    我正在处理碎片和 我的代码中有一个我找不到的问题 logcat 指向我的一个片段中的这段代码 Override public View onCreateView LayoutInflater inflater ViewGroup conta
  • okhttp 获取失败响应

    我已经在我的 android 客户端中实现了 okhttp 来进行网络调用 当我收到失败响应时 我会收到失败代码以及与该代码相关的文本作为消息 但我没有收到服务器发送给我的自定义失败响应 在我实施的代码中的失败响应中 我收到的消息只是 错误
  • logcat 中 mSecurityInputMethodService 为 null

    我写了一点android应显示智能手机当前位置 最后已知位置 的应用程序 尽管我复制了示例代码 并尝试了其他几种解决方案 但似乎每次都有相同的错误 我的应用程序由一个按钮组成 按下按钮应该log经度和纬度 但仅对数 mSecurityInp
  • 我应该释放或重置 MediaPlayer 吗?

    我有自己的自定义适配器类 称为 WordAdapter 并且我正在使用媒体播放器 名为pronounce WordAdapter 类中的全局变量 我有不同的活动 其中每个列表项都有线性布局 名为linearLayout 我正在设置onCli
  • 如何使用 jUnit 将测试用例添加到套件中?

    我有 2 个测试类 都扩展了TestCase 每个类都包含一堆针对我的程序运行的单独测试 如何将这两个类 以及它们拥有的所有测试 作为同一套件的一部分执行 我正在使用 jUnit 4 8 在 jUnit4 中你有这样的东西 RunWith
  • OnLongClickListener 不工作

    我有一个ImageView 我需要使用onLongClickListener对于图像视图 当我使用这段代码时 什么也没有发生 Code gallery Gallery findViewById R id gall1 gallery setA
  • 我如何在java中读取二进制数据文件

    因此 我正在为学校做一个项目 我需要读取二进制数据文件并使用它来生成角色的统计数据 例如力量和智慧 它的设置是让前 8 位组成一个统计数据 我想知道执行此操作的实际语法是什么 是不是就像读文本文件一样 这样 File file new Fi
  • 干净构建 Java 命令行

    我正在使用命令行编译使用 eclipse 编写的项目 如下所示 javac file java 然后运行 java file args here 我将如何运行干净的构建或编译 每当我重新编译时 除非删除所有内容 否则更改不会受到影响 cla
  • 如何检查 Android 中的同步设置

    我正在构建一个 Android 应用程序 我需要检查设备中注册的每个单独帐户的同步设置 我知道我可以通过 ContentResolver 类来做到这一点 但我遇到了一些问题 我已设法获取设备上所有帐户的列表 但我不知道在运行时从哪里获取特定
  • 包 javax.el 不存在

    我正在使用 jre6 eclipse 并导入 javax el 错误 包 javax el 不存在 javac 导入 javax el 过来 这不应该是java的一部分吗 谁能告诉我为什么会这样 谢谢 米 EL 统一表达语言 是 Java
  • 问题:为什么React Native Video不能全屏播放视频?

    我正在react native 0 57 7 中为android和ios创建一个应用程序并使用反应本机视频 https github com react native community react native video播放上传到的视频
  • 长轮询会冻结浏览器并阻止其他 ajax 请求

    我正在尝试在我的中实现长轮询Spring MVC Web 应用程序 http static springsource org spring docs 2 0 x reference mvc html但在 4 5 个连续 AJAX 请求后它会
  • 使用 CXF-RS 组件时,为什么我们使用 而不是普通的

    作为后续这个问题 https stackoverflow com questions 20598199 对于如何正确使用CXF RS组件我还是有点困惑 我很困惑为什么我们需要
  • Dagger 2 中“HasFragmentInjector”的实际用法是什么

    我之前已经实现了 dagger2 v2 2 但现在他们也添加了 dagger android 部分 所以我正在用它创建示例项目 我知道旧的方法论 Provide and Modules and 成分等注释 但从 Dagger 2 8 开始
  • 双枢轴快速排序和快速排序有什么区别?

    我以前从未见过双枢轴快速排序 是快速排序的升级版吗 双枢轴快速排序和快速排序有什么区别 我在 Java 文档中找到了这个 排序算法是双枢轴快速排序 作者 弗拉基米尔 雅罗斯拉夫斯基 乔恩 本特利和约书亚 布洛赫 这个算法 在许多数据集上提供
  • 如何防止在Spring Boot单元测试中执行import.sql

    我的类路径中有一个 import sql 文件 其中包含一些 INSERT 语句 当使用 profile devel 运行我的应用程序时 它的数据被加载到 postgres 数据库中 到目前为止一切正常 当使用测试配置文件执行测试时 imp
  • Android 后台倒计时器

    我有一个 Android 应用程序 它管理一个倒计时器 类 CountDownTimer 它显示在应用程序屏幕中 以显示到达 00 00 还剩多少时间 我现在的问题是 当我按主页按钮或启动另一个应用程序时 应用程序 计时器不会在后台运行 所

随机推荐

  • GWT:字符编码变音

    我想在标签中设置文本 labelDemnaechst setText Demn chst f llig 在应用程序的输出中 字符 显示错误 怎样才能很好地展示它们呢 GWT 假设所有源文件都以 UTF 8 编码 这就是为什么你会看到l sc
  • 在复制初始化中,对复制构造函数的调用是显式的还是隐式的?

    class AAA public explicit AAA const AAA AAA int int main AAA a 1 return 0 在上面的代码中 据我了解 尽管在大多数情况下被省略 但在语义上仍然需要调用复制构造函数 我的
  • 如何在不创建工作区的情况下从 tfs 获取特定版本的文件夹?

    我想在特定时间获取项目的源代码 变更集 所以我需要下载整个文件夹 我想在不同的时间执行此操作 并且处理不同的工作空间不是很方便 我知道关于TFS 将特定版本获取到单独的文件夹中 带工作区 和需要命令在没有工作区的情况下从 TFS 获取文件
  • 在 WPF 中绘制 3D 线条

    我正在开发 CAD 应用程序 并考虑使用 WPF 来渲染我的实体 但WPF似乎不支持绘制3D线条 有没有办法在WPF中绘制3D线条 我不喜欢为我需要绘制的每个线实体创建一个网格 因为我担心这会给我带来重大的性能问题 因为我必须在我的应用程序
  • 如何在Spring MVC中的@controllerAdvice或@RestControllerAdvice中查找控制器名称?

    ControllerAdvice public class GlobalExceptionHandler ExceptionHandler NoHandlerFoundException class public ResponseEntit
  • Bjarne Stroustrup 说我们必须避免链表

    我在 YouTube 上看到了这个视频 https www youtube com watch v YQs6IC vgmoBjarne 表示最好使用向量 而不是链表 我无法理解整个事情 所以有人可以用通俗的语言解释他在说什么吗 P S 我是
  • 如何使用 IBOutletCollection 将多个 UIImageView 连接到同一个插座?

    我有 10 个 UIImageViews 做同样的事情 它们有一些用计时器改变图像的 void 方法 我的 UIImageView 是一个插座 我想将所有 10 个 imageView 连接到同一个插座 但界面生成器不允许我这样做 我发现有
  • 如何修复 Plesk 中的 FastCGI 超时问题?

    PHP 支持当前设置为 作为 Fast CGI 运行 我的服务器日志中不断收到这些错误 mod fcgid 45秒内读取数据超时 脚本标头过早结束 index php 我认为应该快速修复 但我找不到要编辑的文件 这是我可以从 Plesk 更
  • firebase Analytics:Android 应用程序卸载统计信息

    我安装了 Firebase SDK 并将以下两行添加到 MainActivity java private FirebaseAnalytics mFirebaseAnalytics mFirebaseAnalytics FirebaseAn
  • html 正文小于其内容

    这是一个基本的插图问题的
  • 在 R 图中的 x 轴下方添加箭头

    我正在尝试在 R 图中的 x 轴下方添加标记特定 x 坐标的箭头 我的 x 轴位于 y 0 并且当我尝试在中使用负 y 坐标时arrows 因此箭头将垂直于 x 轴 我只绘制了箭头的边缘 尽管有一些空间 例如绘制 x 轴标签和刻度线的位置
  • 使用 FullAjaxExceptionHandler 时 h:body 不会重新渲染

    我正在使用 OmniFacesFullAjaxExceptionHandler显示错误页面 错误页面显示正确 但我在这些页面的样式方面遇到问题 我的应用程序使用的模板在 body 元素上定义了 CSS 类 这些类对于正常页面和错误页面是不同
  • Struts 中的控制器

    MVC 中的控制器是什么 Is it struts xml or Servlet 动作类 我们可以有多个吗Controller在我们的应用程序中 拥有多个控制器是一种好的做法吗 在 Struts 中 应用程序控制器层代码 功能分为两部分 A
  • Ruby 中的每个方法和收集方法有什么不同[重复]

    这个问题在这里已经有答案了 从这段代码我不知道这两种方法之间的区别 collect and each a L Z J collect x puts x succ gt M AA K print a class gt Array b L Z
  • 文本块的数据触发器

    我有一个 Textblock 如果属性为 True 或 False 我会尝试更改 Text 属性的值 我遇到的问题是 该标志可能会在屏幕上的不同事件 来自其他组合框的 onchange 事件 上更改 我不确定如何让这个数据触发器工作 因为我
  • 如何在 Windows 中为 Google Chrome 创建 PPAPI 插件?

    我是 PPAPI 开发的新手 并且已经从以下位置下载了已经的示例here 然而 即使在遇到了文档 我无法构建该项目 我有 Microsoft Visual Studio 2010 Windows 操作系统和 Chrome 30 0 1599
  • 在线 Node.js 服务器

    Node js 是否足够成熟 可以在其中构建整个 Web 应用程序 我的意思是完全在 Node js 中 我在某处读到 出于某种原因 Node js 后面应该有 例如 nginx 这是真的吗 Node js 不能独立存在吗 有没有基于 No
  • MongoDB 计数集合 Node.js

    我正在尝试通过 Node js 与 MongoDB 交互 但在使用 count 方法时遇到了一些问题 我在用节点 mongodb native看起来我正在做的事情应该有效 我的代码示例 var get total num docs func
  • 我可以使用 MERGE INTO 来模拟 Apache Derby 中的“upsert”吗?

    我们正在使用 Derby 并且有很多代码 如下所示 try ResultSet rs executeQuery if rs next updateRowSet rs rs updateRow else executeUpdate 过去 我们
  • 使用 Jackson 反序列化通用类型

    我正在尝试创建一个使用 Jackson 来反序列化 POJO 的类 看起来像这样 public class DeserialiserImp