2017-12-19 8 views
3

Spring WebサービスでJSONを受け取って解析する必要があります。 JSONはHTTP POSTリクエストで送信され、私はこのリクエストの書式、ヘッダーなどを制御できません。これはリクエストの例です:値に引用符が含まれている場合、Spring ControllerでJSONを正しく解析します。

{ 
"u": 1, 
"t": "token", 
"rental": "rental_name", 
"address": "rental_address", 
"arrive": "Monday, Jan. 1 2018", 
"depart": "Wednesday, Jan. 3 2018", 
"adults": 1, 
"children": 0, 
"guest": "guest_name", 
"keys": "key location with "quotes" goes here", 
"inquiry": "inquiry_id" 
} 

"keys"の値には二重引用符が含まれています。

私は私の春のコントローラで要求を消費すると、その値の引用符がそれを混乱されているので、私は当然のことながら、以下の例外を取得:

org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'text/plain;charset=UTF-8' not supported 

はここでPOSTリクエストを受けた私の春のコントローラのメソッドです:

@RequestMapping(value ="/booking_new", method = RequestMethod.POST, consumes = MediaType.ALL_VALUE) 
public ResponseEntity newBooking(@RequestBody Booking payload){ 
    //Extract values from the generated Booking object etc 
} 

私は、文字列として@RequestBodyを受け取り、すべての引用符がエスケープされますので、ちょうどJSONを無効に、引用符をエスケープすることはできません。

リクエストが入ったときに何らかの値で引用符をエスケープまたは削除する方法はありますか?

+0

jsonに問題はありません。このjsonと一致するクラスを作成し、acceptをPost Requestの引数として指定します。また、コンテンツタイプのヘッダーを確認してください – pvpkiran

+0

はい、前のコメントで述べたように、エラーはコンテンツタイプに関連しています。おそらくMediaType.APPLICATION_JSONを使用しますか? – PillHead

+2

これは間違ったJSONです。 ''キーのある場所を引用符で囲んで ''ここに行く ''をキーの場所にする必要があります。 – Vadim

答えて

0

私はJSON値を構成する変数を制御できませんでしたが、私は全体的なPOST要求の形式を何らかの形で制御していました。

二重引用符の問題を回避するのが簡単なので、JSONではなくXMLとして書式設定を終了しました。

関連する問題