当前位置: 首页 > 知识库问答 >
问题:

在Spring Boot中无法解析JSON[重复]

谢旭
2023-03-14

我试图在spring Boot中将在JSON中得到的响应存储在数据库中。但是当它显示JSON解析错误

这是我的JSON响应

[
{
id: 1,
name: "Bilbo Baggins",
location: "india",
email: "jba2hba.com",
dateOfBirth: "2020-12-21T13:13:38.000+00:00"
},
{
id: 2,
name: "Frodo Baggins",
location: "bhutan",
email: "jhb@hbh.com",
dateOfBirth: "2020-12-21T13:13:38.000+00:00"
}
]
    @Entity
    public class Employee {
        
        private @Id @GeneratedValue( strategy = GenerationType.AUTO ) Long id;
        private String name;
        private String location;
        private String email;
        private Date dateOfBirth;
    
        public Employee() {
        }
    
        public Employee(String name, String location, String email, Date date) {
    
            this.name = name;
            this.location = location;
            this.email = email;
            this.dateOfBirth = date;
        }
//getters and setters

我的getEmployees()方法

public void getEmployees() {
        
        RestTemplate restTemplate = new RestTemplate();
        Employee result = restTemplate.getForObject(Constants.URI, Employee.class);
        System.out.println(result);
        }

这是我得到的错误

com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `com.nagarro.hrLogin.entity.Employee` out of START_ARRAY token
 at [Source: (PushbackInputStream); line: 1, column: 1]
    at com.fasterxml.jackson.databind.exc.MismatchedInputException.from(MismatchedInputException.java:59) ~[jackson-databind-2.11.3.jar:2.11.3]
    at com.fasterxml.jackson.databind.DeserializationContext.reportInputMismatch(DeserializationContext.java:1468) ~[jackson-databind-2.11.3.jar:2.11.3]
    at com.fasterxml.jackson.databind.DeserializationContext.handleUnexpectedToken(DeserializationContext.java:1242) ~[jackson-databind-2.11.3.jar:2.11.3]
    at com.fasterxml.jackson.databind.DeserializationContext.handleUnexpectedToken(DeserializationContext.java:1190) ~[jackson-databind-2.11.3.jar:2.11.3]
    at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeFromArray(BeanDeserializer.java:604) ~[jackson-databind-2.11.3.jar:2.11.3]
//

我想不出是什么造成了这个错误,如果有人能给我一些建议,那将会很有帮助

共有1个答案

林星华
2023-03-14

您只需尝试将列表反序列化为对象。

您可以按以下方式通过ParameterizedTypeReference:

ResponseEntity<List<Employee>> response = this.restTemplate.exchange("URL", HttpMethod.GET,null,new ParameterizedTypeReference<List<Employee>>(){});

另一方面,我认为外化实体本身是一个反模式,试着看看DTO设计模式。

第二种情况:您必须将一个employee对象发送到两个应用程序,其中一个只请求名称,另一个只请求名字,在这种情况下,您将有一个或多个输出DTO with mapper(如示例mapstruct或dozer)用于向请求应用程序输出。

 类似资料:
  • 我试图将一个JSON发送给一个REST控制器,它是用Spring编写的,不管我做了什么尝试,Jackson抛出了一个异常: 这是JSON: 有什么建议吗?

  • 问题内容: 我想解析JavaScript中的JSON字符串。响应就像 我怎样才能获得的值,并从这个? 问题答案: 在JavaScript中解析JSON的标准方法是 JSON.parse() 该JSONAPI是在ES5(2011)中引入的,此后按市场份额和Node.js在超过99%的浏览器中已实现。它的用法很简单: 唯一无法使用的时间是你是否在为旧版浏览器编程,例如IE 7(2006),IE 6(2

  • 我有一个简单的springboot程序,它接受json并打印出来。主要目的是使用json验证程序包,但当前的上下文是基本的请求解析。问题是,当我试图将输入请求映射到一个类实体时,它给出了以下错误:“org.springframework.http.converter.httpMessageEndableException”,。 > 控制器(Hello.java): Java类实体: 公共类Demo

  • 问题内容: 当我在Kibana中看到结果时,我发现JSON中没有字段,而且,该字段仅包含。 是否可以解析json中的字段并将其显示在Kibana中?我有以下配置: 以及以下JSON文件: 问题答案: 是。您需要在配置中添加一个过滤器,如下所示。 在这里的文档中对此进行了很好的描述 编辑 json编解码器似乎不喜欢传入数组。单个元素与此配置一起工作: 输入: Logstash结果: } 现在有了一个

  • 当应用程序在AWS Elasticbeanstrok上运行时,有人知道如何从资源文件夹中读取文件吗? 请参阅下面的代码: 这是错误消息: JAVA木卫一。FileNotFoundException:类路径资源[application.properties]无法解析为绝对文件路径,因为它不位于文件系统:jar:file:/var/app/current/application中。罐子/BOOT-IN

  • 无法解析类型java.lang.Object。它从必需的.class文件中间接引用