在弹簧网络应用程序中我尝试将对象列表作为请求数据发送。我可以在邮件正文中发送json对象列表并在POST中解析,但是我无法通过url为GET发送相同的数据。在json中,列表结构如下
{
"vendorIDs": [{
"vendorID": [111,1000]
},{
"vendorID": [3300]
}]
}
如何通过url发送上面的列表以及如何解析服务器端的列表?我试过发送
xyz.zyz/search?vendorIDs={"vendorID":["111","1000"],"vendorID":["3300"]}
并解析为
@RequestMapping(value="/search", method=RequestMethod.GET)
public returntype myMethod(@RequestParam(value="vendorIDs") List<vendorID> vendorIDs) throws Exception{
//operation
return;
}
是否可以通过url编码发送此类列表?我在哪里错了?
答案 0 :(得分:0)
如果您对此进行了网址编码:echo "PATH=\"\$HOME/.local/bin:\$PATH\"" >> ~/.bashrc
您将在控制器中收到它,但它不会被强制转换为{"vendorID":["111","1000"],"vendorID":["3300"]}
,而只会是一个JSON字符串。然后,您可以使用JSON反序列化器将其反序列化为List<VendorID>
。
例如:
List<VendorID>
虽然此时您可能想知道(a)最好是@RequestMapping(value="/search", method=RequestMethod.GET)
public returntype myMethod(@RequestParam(value="vendorIDs") String vendorIDs) throws Exception {
List<VendorID> asList = objectMapper.readValue(vendorIDs, List.class);
return;
}
这些数据并使用Spring内置的JSON处理在控制器中向您显示POST
或者(b)您可以指示Spring将其JSON处理应用于RequestParam,在这种情况下,请查看this question的已接受答案。