我是春季靴子的新手。我有一个看起来像这样的JSON对象:
{
id: 3,
messageType: ["one", "two", "three"]
}
我有一个代表对象的类:
public class Subscription {
public Subscription(@JsonProperty("id") long id, @JsonProperty("messageType") List<String> messageType) {
this.id = id;
this.messageType = messageType;
}
}
我有一个PUT请求的控制器可以完美运行:
@RequestMapping(value=SUBSCRIBE_URI, method=RequestMethod.PUT)
public ResponseEntity<String> updateSubscription(@RequestBody Subscription payload) throws Exception{
...
}
但我无法完成GET请求的工作。当我使用@RequestParam并分离id和messageType参数时,messageType列表在字符串中有括号(即&#34; [one]&#34;,&#34; [two]&#34;)。当我使用类似于PUT请求的@RequestBody时,我得到400个错误。
将此JSON数据传递给GET请求而不在字符串中添加括号的正确方法是什么?
答案 0 :(得分:0)
@RequestParam可以正确地将原始数据类型映射到它们各自的变量,特别是在GET的情况下,它接收所有数据作为简单的字符串。 另外,我不认为messageType需要是List数据类型。作为一个字符串,它只是接收纯字符串的值,没有括号。
答案 1 :(得分:0)
您无法直接在请求参数上发送JSON。您需要执行类似的操作,例如在要传递给服务器的json结构上调用encodeURIComponent(),然后让参数只是一个字符串。在服务器端,您需要将字符串转换回模型对象。