【发布时间】:2023-03-07 03:29:01
【问题描述】:
我正在使用 Spring MVC 创建一个简单的 Rest API。其中一个端点将 JSON 字符串作为请求正文,我希望将其映射到一个对象。下面是数据模型:
public class StudentDataImpl {
private String studentName;
private String studentHobby;
private String studentMobile;
private Date studentDOB;
它可以正常工作,但是当我添加另外 2 个变量,即一个数组列表和另一个类对象时,应用程序会出错。
以下是另外 2 个变量:
private ArrayList<String> studentSkills;
private StudentAddressImpl address;
下面是处理端点请求的方法:
@RequestMapping(value="/students/{studentName}", method = RequestMethod.PUT, produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE )
public StudentDataImpl UpdateStudent(@PathVariable("studentName") String name, @RequestBody StudentDataImpl student) {
System.out.println("Student Details are received as below for the given Student "+student.getStudentName());
System.out.println(student.toString());
return student;
}
这是我的 JSON 字符串:
{
"StudentName": "Mohit Kumar Tyagi",
"StudentHobby": "Gaming",
"StudentMobile": "123456789",
"StudentDOB": "1999-12-25",
"StudentSkills" : [ "SPRING"],
"address": [
{
"street" : "Street1",
"city" : "city1",
"pincode" : "123456",
"country" : "Country"
}
]
}
如果我使用这个 JSON,它会给我以下错误:
信息:FrameworkServlet 'spring-dispatcher':初始化在 1776 毫秒内完成
公共字符串 ExceptionJSON 解析错误:无法从 START_ARRAY 令牌中反序列化 com.mohit.admission.StudentAddressImpl 的实例;嵌套异常是 com.fasterxml.jackson.databind.exc.MismatchedInputException: 无法从 START_ARRAY 令牌中反序列化 com.mohit.admission.StudentAddressImpl 的实例
在 [来源:(PushbackInputStream);行:7,列:13](通过引用链:com.mohit.admission.StudentDataImpl["address"])
【问题讨论】:
标签: json spring-mvc