我有一个带有以下Java类的Spring启动应用程序
class Student{
int id;
ArrayList<String> subjectsTaken;
}
我对另一个服务进行REST调用,其中Student的实例作为POST请求中的实体(在正文中)传递。当subjectTaken变量中有多个条目时,每件事都可以正常工作。
当subjectTaken变量中有多个条目时,POST请求中的正文如下
{&#34; ID&#34;:1,&#34; subjectsTaken&#34;:[&#34;科学&#34;&#34;数学&#34;&#34;历史&#34 ]}
其中subjectTaken是一个String数组
但是当subjectTaken变量中只有一个条目时,请求正文如下
{&#34; ID&#34;:1,&#34; subjectsTaken&#34;:&#34;科学&#34;}
其中subjectTaken只是一个String(而不是一个带有一个String的数组)
由于这个原因,反序列化在被调用的REST服务中失败并出现以下错误
无法从VALUE_STRING标记中反序列化java.util.ArrayList的实例。
感谢关于此的任何指示。
答案 0 :(得分:1)
我想我找到了问题的解决方案。您可以在发生反序列化的被调用服务的application.properties文件中设置此属性。
spring.jackson.deserialization.ACCEPT_SINGLE_VALUE_AS_ARRAY =真
这有助于解决问题。
答案 1 :(得分:0)
我建议创建一个数组,即使它只是一个主题。并将此数组发送到其余控制器。
{&#34; ID&#34;:1,&#34; subjectsTaken&#34;:[&#34;科学&#34;]}