【问题标题】:How to send object list through url and parse in spring application [duplicate]如何通过url发送对象列表并在spring应用程序中解析[重复]
【发布时间】:2017-12-16 20:14:26
【问题描述】:

在 Spring Web 应用程序中,我尝试将对象列表作为请求数据发送。我可以在消息正文中发送 json 对象列表并在 POST 中解析,但我无法通过 url 发送相同的数据以获取 GET。 json中的list结构如下

  {
"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 编码发送这样的列表?我哪里错了?

【问题讨论】:

标签: java json spring


【解决方案1】:

如果你对这个进行 URL 编码:{"vendorID":["111","1000"],"vendorID":["3300"]},你将在你的控制器中收到它,但它不会被强制转换为 List&lt;VendorID&gt;,而只是一个 JSON 字符串。然后,您可以使用 JSON 反序列化器将其反序列化为 List&lt;VendorID&gt;

例如:

@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;
}

尽管此时您可能想知道是否 (a) 最好将此数据 POST 并使用 Spring 内置的 JSON 处理在控制器中为您提供 List&lt;VendorID&gt; 或 (b) 您可以指示 Spring将其 JSON 处理应用于 RequestParam,在这种情况下,请查看接受的答案 this question

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-11
    • 1970-01-01
    • 2019-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-16
    相关资源
    最近更新 更多