Spring MVC:无法反序列化 START_ARRAY 令牌之外的实例

2024-01-03

我已经为此绞尽脑汁有一段时间了,但仍然没有快乐。我是 Spring 新手,确实需要一些帮助。

我正在尝试使用 Spring Boot 从数据库表返回代码列表。当我从浏览器中的 URL 调用 REST 控制器时...

示例网址:本地主机:8081/cis/utl/lookupchoice/O.s/

它返回这个:

[
{"lookupId":10,"choiceGroup":"O.s","choiceCode":null,"displayLabel":"Pending","hidden":false,"displayOrder":1},
{"lookupId":11,"choiceGroup":"O.s","choiceCode":null,"displayLabel":"Active","hidden":false,"displayOrder":2},
{"lookupId":12,"choiceGroup":"O.s","choiceCode":null,"displayLabel":"Archived","hidden":false,"displayOrder":3},
{"lookupId":13,"choiceGroup":"O.s","choiceCode":null,"displayLabel":"Placeholder","hidden":false,"displayOrder":4}
]

但是,当我尝试从客户端控制器运行它时,我收到一条错误消息。调用看起来像这样:

//
//Compiles but does not work
LookupChoice lookupChoice = restTemplate.getForObject(REST_URI+"/utl/lookupchoice/O.s/",
         LookupChoice.class);

错误: 嵌套异常是 com.fasterxml.jackson.databind.JsonMappingException:无法从 START_ARRAY 令牌中反序列化 com.MyPakage.repository.LookupChoice 的实例

假设由于返回数组而不是单个对象而发生错误,我将代码更改为:

//
//Does not compile
Iterable<LookupChoice> lookupChoice = restTemplate.getForObject(REST_URI+"/utl/lookupchoice/U.r/",
         Iterable<LookupChoice.class>);

但是,现在我在 Intellij 中遇到错误。它表明一个“预期表达“ 为了Iterable<LookupChoice.class>参数,我无法克服这一点。

感谢您的时间和帮助, 埃德

感谢您的回复。我选择了这个,现在一切似乎都有效。感谢您的帮助!

RestTemplate restTemplate = new RestTemplate();
ResponseEntity<Object[]> responseEntity;
Object[] lookupChoice;

responseEntity = restTemplate.getForEntity(REST_SERVICE_URI+"/utl/lookupchoice/O.s/" , Object[].class);
lookupChoice = responseEntity.getBody();
model.addAttribute("Status", lookupChoice);

它无法编译的原因是在 Java 中不可能传递泛型类型参数的类,因为它们在运行时不存在。

这里有两个选择,要么使用数组(LookupChoice[])并将其转换为List<LookupChoice>如有必要:

restTemplate.getForObject(url, LookupChoice[]);

或者您可以使用ParameterizedTypeReference:

restTemplate.exchange(url, HttpMethod.GET, null, new ParameterizedTypeReference<List<LookupChoice>>() {}).getBody()

但它是一个接口,因此要么对其进行子类化,要么使用匿名类,就像我在上面的代码示例中所做的那样。

Also, ParameterizedTypeReference只适用于exchange()如果我没记错的话,你会得到一个ResponseEntity而不是你的原始对象,所以你必须使用getBody() method.

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

Spring MVC:无法反序列化 START_ARRAY 令牌之外的实例 的相关文章

随机推荐

  • 如何使整个页面变暗? ( html )

    当我使用其他 div 来执行此操作时 它不会影响其他 dom 类 因此当我希望整个页面变暗时 我必须修改每个 dom 类 有没有办法用灰色透明平面重叠整个文档 有一个codepen http codepen io srikarg full
  • 上传到 Firebase 托管无法正常工作

    我刚刚使用 AngularJS 和 Firebase 作为实时数据库构建了我的第一个 Web 应用程序 当我在本地主机上运行它时 我想要它做的一切对我来说都很有效 但是 当我将其加载到 Firebase Hosting 并打开它时 文件尚未
  • 当数组中的 json 对象数量未知时,如何从 mysql 文本列中提取 json 数组作为表?

    有没有办法从包含具有不同数量的 json 对象的 json 数组的文本列中提取数据到表中 例如 如果我 CREATE TABLE tableWithJsonStr location TEXT jsonStr TEXT INSERT INTO
  • 尝试将实体映射到 DTO 对象时 ModelMapper 返回 NULL

    这是我尝试映射的对象的类 package com agent module entities import java util Set import javax persistence Entity import javax persist
  • 在 C# 应用程序中嵌入 Excel 的最佳方法是什么 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想将 MS Excel 嵌入到我的 wpf C 应用程序中的选项卡式视图中 以便用户可以利用真正的 MS Excel 不是克隆 轻松
  • 创建多页 PDF

    我需要实现创建包含多页文本的 pdf 的功能 class PDFCreator func prepareData gt Data 1 let pdfMetaData kCGPDFContextCreator PDF Creator kCGP
  • python 脚本完成后保持 Selenium 浏览器打开

    我正在开发一个硒项目 但每次脚本结束时 窗口都会自动关闭 不过 在脚本关闭后 我想保持窗口打开 我用谷歌搜索了这个 stackoverflow 说使用以下代码来保持它打开 chrome options webdriver ChromeOpt
  • Groovy 从 URL 下载图像

    我想知道从该 RUL 下载图像的正确方法是什么 http www hidemyass com proxy list img port 7018246 1 http www hidemyass com proxy list img port
  • 浏览速度取决于浏览器吗?

    浏览速度取决于浏览器 如IE firefox 吗 如果取决于浏览器 哪种浏览器最好并且运行速度最快 如果我们清除浏览器的缓存 会不会降低浏览速度 thanks 是的 这取决于浏览器 不仅是哪个浏览器 还有它的配置 有很多东西在不同的浏览器中
  • error_log 与包含的文件位于同一目录中吗?

    我研究了不同的方法和指令 包括 自动前置文件 user ini 文件 getcwd 调试回溯 我似乎找不到一种方法来更改 error log 的路径以登录与包含 需要的文件相同的路径 例如 假设 index php 有以下行 include
  • 使用 Alembic 时导入应用程序会引发 ImportError

    我正在尝试研究如何在 Flask 中使用 alembic 我想在 Flask 应用程序中导入一个方法 tree README md alembic README env py env pyc script py mako versions
  • 删除 uiwindow 的子视图?

    我想从 uiwindow 中删除一个视图 所以我在 appdelegate 方法中 nslog 它说窗口的子视图计为两个NSLog d self window subviews count 那么我如何从窗口中删除该子视图 如果我删除该子视图
  • Anaconda 安装卡在解压:anaconda-2020.02-py37_0.tar.bz2?

    我是Python新手 我正在我的 Windows 7 笔记本电脑上安装 Anaconda 3 2020 02 64 位 它卡在文件名 anaconda 2020 02 py37 tar bz2 处 我尝试了多次 但每次都会发生 我刚刚做完
  • 是否有稳定且生产质量的 nosql 数据存储?

    是否有可以在生产系统上使用的生产质量 nosql 存储 我看过 cassandra tokyodb couchdb 等 但它们似乎都没有准备好在生产环境中进行部署 我说的是每分钟数千个请求和大量的读 写 更新 我唯一关心的是速度和服务时间
  • 您测试 iPhone / iPad 应用程序的方法是什么?

    在为 iPhone iPad 开发时 您会 进行单元 集成 等测试 您使用什么框架 您还尝试过哪些其他框架 如果您决定不使用它们 为什么不呢 NOTE这是基于一个几天前提出的问题 https stackoverflow com questi
  • 如何将 SQLite 文件中的更改迁移到现有应用程序中?

    我已经提交了一个 iOS 应用程序SQLite数据库文件用于在应用程序内存储数据 现在 在应用程序的下一个版本中 我对数据库文件进行了一些修改 Like 添加了新表 1 个空表 2 个包含固定数据 在表中添加了新列 从表中删除现有列 什么
  • 是否可以在 webview 中打开 sdcard/cache 中存储的 pdf 文件?

    我正在我的应用程序中下载 PDF 文件并希望允许用户查看它 是否有可能使用 webview 我可以显示下载到 SD 卡或本地内存的 pdf 文件 据我所知 有一种解决方法 我可以将 pdf 文件的链接提供到 google url 这将在 w
  • 扭曲意外连接丢失

    我使用 Python Twisted 编写了一个 TCP 服务器 用于从客户端发送 接收二进制数据 当客户关闭其应用程序或调用abortConnection方法 我得到connectionLost事件正常 但当客户端意外断开连接时 我没有收
  • Node.js 模块是否需要包装在模块模式中?

    为了确保适当的隔离 我倾向于将我编写的每个 node js 模块包装在函数范围内 function var express require express var jade require jade var moment require m
  • Spring MVC:无法反序列化 START_ARRAY 令牌之外的实例

    我已经为此绞尽脑汁有一段时间了 但仍然没有快乐 我是 Spring 新手 确实需要一些帮助 我正在尝试使用 Spring Boot 从数据库表返回代码列表 当我从浏览器中的 URL 调用 REST 控制器时 示例网址 本地主机 8081 c