我发布这样的事情:
{
"stuff": [
{
"thingId": 1,
"thingNumber": "abc",
"countryCode": "ZA"
},
{
"thingId": 2,
"thingNumber": "xyz",
"countryCode": "US"
}
]
}
我可以在控制器中检索数据,如下所示:
@RequestMapping(value = "/stuffs", method = RequestMethod.POST)
public String invoices(@RequestBody Map<String, List <Stuff>> stuffs) {
return "Hooray";
}
我真正想做的是只将一个东西列表传递给控制器。即:
@RequestMapping(value = "/stuffs", method = RequestMethod.POST)
public String invoices(@RequestBody List <Stuff> stuffs) {
return "I'm sad that this won't work.";
}
但是,杰克逊不喜欢这样。我得到的错误如下:
无法读取JSON文档:无法从[来源:java.io.PushbackInputStream@2a30a2f4; START_OBJECT令牌\ n中反序列化java.util.ArrayList实例。行:1,列:1];嵌套的异常是com.fasterxml.jackson.databind.JsonMappingException:无法在[来源:java.io.PushbackInputStream@2a30a2f4; 行:1,列:1]
我无法发送以下内容(因为它不是有效的JSON):
{
[
{
"thingId": 1,
"thingNumber": "abc",
"countryCode": "ZA"
},
{
"thingId": 2,
"thingNumber": "xyz",
"countryCode": "US"
}
]
}
我确信这很简单,但是我无法从我的StackOverflow和Google搜索中获得答案。
任何帮助,将不胜感激!:)
您只需要发送不带花括号的邮件
[
{
"thingId": 1,
"thingNumber": "abc",
"countryCode": "ZA"
},
{
"thingId": 2,
"thingNumber": "xyz",
"countryCode": "US"
}
]
在您的控制器中,当您告诉Jackson它将解析一个列表时,它应该是一个列表,而不是包含列表的对象
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句