2017-02-18 11 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

[要求のリクエストとしてJSONデータをリクエスト本体として渡す](http://stackoverflow.com/questions/11575947/passing-json-data-in-get-request-as-request-body)の可能な複製 – Avinash

答えて

0

リクエストパラメータでJSONを直接送信することはできません。あなたは、あなたのサーバに渡したいjson構造体に対して、encodeURIComponent()を呼び出して、引数を文字列にする必要があります。サーバー側では、文字列をモデルオブジェクトに変換する必要があります。

0

@RequestParamは、プリミティブデータ型のみを適切な変数にマップできます。特に、すべてのデータを単純な文字列として受け取るGETの場合はそうです。 また、私はリストのデータ型のmessageTypeの必要性を参照していません。文字列として、大かっこなしの単純な文字列として値を受け取るだけです。

関連する問題