如何通过url发送对象列表并在spring应用程序中解析

时间:2017-07-12 11:55:27

标签: java json spring

在弹簧网络应用程序中我尝试将对象列表作为请求数据发送。我可以在邮件正文中发送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编码发送此类列表?我在哪里错了?

1 个答案:

答案 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的已接受答案。