Spring Boot:如何将JSON对象添加到GET请求?

时间:2017-02-18 05:30:43

标签: json spring get request put

我是春季靴子的新手。我有一个看起来像这样的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请求而不在字符串中添加括号的正确方法是什么?

2 个答案:

答案 0 :(得分:0)

@RequestParam可以正确地将原始数据类型映射到它们各自的变量,特别是在GET的情况下,它接收所有数据作为简单的字符串。 另外,我不认为messageType需要是List数据类型。作为一个字符串,它只是接收纯字符串的值,没有括号。

答案 1 :(得分:0)

您无法直接在请求参数上发送JSON。您需要执行类似的操作,例如在要传递给服务器的json结构上调用encodeURIComponent(),然后让参数只是一个字符串。在服务器端,您需要将字符串转换回模型对象。