Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Json 带有ArrayList的Java对象<;字符串>;将序列化为单个字符串,而不是包含一个字符串的数组_Json_Rest_Serialization_Spring Boot_Deserialization - Fatal编程技术网

Json 带有ArrayList的Java对象<;字符串>;将序列化为单个字符串,而不是包含一个字符串的数组

Json 带有ArrayList的Java对象<;字符串>;将序列化为单个字符串,而不是包含一个字符串的数组,json,rest,serialization,spring-boot,deserialization,Json,Rest,Serialization,Spring Boot,Deserialization,我有一个具有以下Java类的spring引导应用程序 class Student{ int id; ArrayList<String> subjectsTaken; } 班级学生{ int-id; ArrayList subjectsTaken; } 我对另一个服务进行REST调用,其中Student的实例在POST请求中作为实体(在主体中)传递。当subjectsTaken变量中有多个条目时,一切正常 当subjectsTaken变量中有多个条目时,POST请求

我有一个具有以下Java类的spring引导应用程序

class Student{
    int id;
    ArrayList<String> subjectsTaken;
}
班级学生{
int-id;
ArrayList subjectsTaken;
}
我对另一个服务进行REST调用,其中Student的实例在POST请求中作为实体(在主体中)传递。当subjectsTaken变量中有多个条目时,一切正常

当subjectsTaken变量中有多个条目时,POST请求中的主体如下所示

{“id”:1,“学科状态”:[“科学”、“数学”、“历史”]}

其中subjectsTaken是一个字符串数组

但是,当subjectsTaken变量中只有一个条目时,请求主体如下所示

{“id”:1,“主题状态”:“科学”}

其中subjectsTaken只是一个字符串(而不是一个包含一个字符串的数组)

由于这个原因,被调用的REST服务中的反序列化失败,出现以下错误

无法反序列化java.util.ArrayList的实例,该实例超出值\字符串标记


感谢所有关于这方面的建议。

我建议创建一个数组,即使它只是一个主题。并将此数组发送到rest控制器


{“id”:1,“subjectsTaken”:[“science”]}

我想我找到了问题的解决办法。您可以在正在进行反序列化的被调用服务的application.properties文件中设置此属性

spring.jackson.deserialization.ACCEPT_SINGLE_VALUE_AS_ARRAY=true

这有助于解决问题