Java Springboot 使用 rest api 映射到模型

安德鲁

我正在尝试将 API 的响应映射到我的对象:

class Person {
  private Long id;
  private String firstname;
  private String lastname;

  public Person(Long id, String firstname, String lastname)
...

我的 api 调用如下所示:

RestTemplate restTemplate = new RestTemplate();
Person person = restTemplate.getForObject("http://xxx/getPerson", Person.class);

它返回一个如下所示的 json:

{
 "id": 1,
 "firstname": "first",
 "lastname": "last"
}

不幸的是,我收到以下错误:

Type definition error: [simple type, class xxx.Person]; nested exception is com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `xxx.Person` (no Creators, like default construct, exist): cannot deserialize from Object value (no delegate- or property-based Creator)\n at [Source: (PushbackInputStream); line: 4, column: 5]

知道为什么吗?我的班级中有一个构造函数,所以我不太确定为什么会抛出错误。谢谢!

先生们

正如例外明确指出的那样:

(没有创建者,如默认构造,存在)

的类没有默认构造函数Person

知道为什么吗?

因为您显式定义了一个构造函数并且正是由于这种行为,所以不会自动生成默认构造函数。

所以你应该处理它,你需要关心两件事:

  1. 提供一个default constructor您明确定义它或使用lombok注释@NoArgsConstructor
  2. 另一个提示可能是属性不匹配问题,如果 json 没有您class定义的所有属性,您还应该通过@JsonIgnoreProperties(ignoreUnknown = true)显式忽略它们@JsonIgnore单独添加额外字段。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在映射到使用SpringBoot开发的REST API中的Java对象时,使JSON有效负载字段不区分大小写

使用springboot找不到rest api

尝试在Java SpringBoot中使用REST API时收到错误请求

使用Java使用REST API

为TensorFlow Serving保存模型,并使用SignatureDefs将api端点映射到某些方法?

如何使用Data Factory将JSON数据从REST API映射到Azure SQL

REST-JSONrequest映射到Java对象

将Json数组映射到Java模型

如何在SpringBoot中将嵌套的JSON映射到对象模型

如何使用 Stream API 将 Object 类型的实例映射到 Java 中的特定类

将查询结果映射到REST API的对象

在Java中使用BitBucket REST API

使用Java的REST API AWS云

如何使用Java / Android与REST API通信?

使用Java中的Rest API上传文件

使用Java Rest API进行PayPal登录

使用 java 和 spring boot 的 REST api

SpringBoot Rest API:作为 Java 应用程序工作,在 tomcat 上部署时失败

创建Rest URL来调用Java和SpringBoot中的外部api的最佳方法

用于将API对象映射到UI模型对象的模式

如何从API获取CSV并将其映射到模型中

将api调用映射到flutter中的模型类

使用REST API或Java API的dataproc自定义映像

SpringBoot中Rest Api的计数器

springboot中REST API的多个端点

SpringBoot 2.0:使用 Spring Security Oauth2 保护 REST API

500内部服务器错误; 在springBoot rest api中使用POST方法时

使用REST API的SpringBoot App连接到LDAP-自动配置LdapContextSource

使用Kubernetes集群的带有动态Rest API调用的Springboot应用程序