2017-06-04 21 views
0

私は最初のREST WebサービスをSpringフレームワークを使って設定しようとしています。フロントエンドを気にする前に、私はコントローラーのRequestmappingを最初に設定したいと思います。私はPostmanを使ってこれをテストしようとしています。JSONからマップと文字列を解析できません

私はPOSTに設定配達員、生の、アプリケーション/ JSONを使用して、次のい:

私は、次のしている私のコントローラで
{"attendanceList" : { 
    "Jane Doe": "PRESENT", 
    "John MacDonald": "PRESENT", 
    "Fred Flinstone": "ABSENT"}, 
"date":"2017-06-01"} 

@RequestMapping(value = "/post", method = RequestMethod.POST, produces = {MediaType.APPLICATION_JSON_VALUE }) 
@ResponseBody 
public void setAttendence(@RequestBody Map<String, Attendence> attendenceList, String date) { 
    //Implementation code 
} 

しかし、私が送信するとき上記のサーバーへの投稿要求は、サイズ4のマップを取得します。

"attendanceList" -> ABSENT (the default value) 
"Jane Doe" -> PRESENT 
"John MacDonald" -> PRESENT 
"Fred Flinstone" -> ABSENT 

そして、私の文字列の日付= null

なぜこれが私の意図とは違うのですか?私は間違って何をしていますか?

答えて

2

リクエストボディ、つまりJSON全体が、Map<String, Attendence>に解析されるはずです。 JSONは明らかにそのようなマップではありません。

は、代わりにその春を削除する必要があり、無視する、など

public class Input { 
    Map<String, Attendence> attendanceList; 
    LocalDate date; 

    // ... 
} 

そしてもちろんの

String date引数としてクラスにマッピングする必要があります。

+0

Duh ...どのように愚かなのですか。 ありがとう、今の魅力のように動作します。 "2017-06-01"からLocalDateオブジェクトにまっすぐ進むことは機能していないようです。私は今、文字列の日付変数を持つInputクラスを持っており、getDate()メソッドのDateTimeFormatterでLocalDateに解析しています。それはうまく動作します。 –

関連する問題