java - 如何将json数组映射到java类

标签 java spring-boot

我正在尝试将请求正文从 postman 映射到 Spring Boot 实体,

{
"college":"0",
"collegeName":"",
"email":"a.r@g.com",
"firstName":"Mike",
"gradEndYear":"2017",
"gradStartYear":"2014",
"lastName":"worrell",
"marks":[
    {"sem1":60},
    {"sem2":70},
    {"sem3":80},
    {"sem4":60},
    {"sem5":60},
    {"sem6":60},
    {"sem7":70},
    {"sem8":60}
    ]
}

问题是我尝试将标记数组映射到 map ,但出现以下错误

message": "JSON parse error: Can not deserialize instance of java.util.LinkedHashMap out of START_ARRAY token; nested exception is com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize instance of java.util.LinkedHashMap out of START_ARRAY token\n at [Source: java.io.PushbackInputStream@2b05836e; line: 9, column: 9] (through reference chain: icms.external.springboot.candidateRegistration.model.CandidateRegistrationForm[\"marks\"])

Java 模型

@Component
@Scope(BeanDefinition.SCOPE_PROTOTYPE)
public class CandidateRegistrationForm
{
    private String firstName;
    private String middleName;
    private String lastName;
    private String email;
    private String college;
    private String collegeName;
    private String gradStartYear;
    private String gradEndYear;

    private Map<String, Integer> marks = new HashMap<>();

//getters and setters
  }

最佳答案

要么更改 json,以便将其映射到 java map 数据结构,在这种情况下,json 将类似于 “标记”: { “SEM1”:60, “SEM2”:70, }

或者使用数组列表代替 map 。

关于java - 如何将json数组映射到java类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44692992/

相关文章:

Java Spring Boot 使用剩余 api 映射到模型

导致 NoClassDefFoundError 的 Java 系统参数

java - 有没有办法在java中将字节转换为 boolean 数组?

java - 从 Spring Boot 1.1.5 升级到 1.1.6 后,gradle 构建失败,:bootRepackage task 中出现 "Duplicate library commons-io-1.3.2.jar"

tomcat - Websocket 服务器 Spring Boot

java.lang.IllegalStateException : Encountered invalid @Scheduled method 'execute' : For input string: "1#1"

java - 如何在 Spring Boot wicket 应用程序中注入(inject) RequestScope bean

java - 循环遍历SoapMessage主体中的所有元素并返回我想要的节点

java - 在android中按下后退按钮后如何停止finish()方法?

java - Spring @Autowired 带有 2 个相同类型的 bean