2017-02-18 301 views
0

我是新来的春季引导。我有一个JSON对象,看起来像这样:Spring Boot:如何将JSON对象添加到GET请求?

{ 
    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列表在字符串中有括号(即“[one]”,“[two]”)。当我使用类似于PUT请求的@RequestBody时,我得到了400个错误。

将这个JSON数据传递给GET请求而不在字符串中取得括号的正确方法是什么?

+0

[将get请求中的JSON数据作为请求正文传递]的可能重复(http://stackoverflow.com/questions/11575947/passing-json-data-in-get-request-as-request-body) – Avinash

回答

0

您无法直接在请求参数上发送JSON。你需要像在你想传递给你的服务器的json结构上调用encodeURIComponent()那样做,然后让参数成为一个字符串。在服务器端,您需要将字符串转换回模型对象。

0

@RequestParam只能将原始数据类型正确地映射到它们各自的变量,尤其是在GET的情况下,当它将所有数据作为简单字符串接收时。 此外,我没有看到messageType的需要是List数据类型。作为一个字符串,它将简单地接收值作为纯字符串,没有括号。

相关问题