web-dev-qa-db-ja.com

post man(rest service)からjson date(string format)をJava日付オブジェクトを受け入れる)に送信する方法

Postman経由でJSONの下に送信した後、dateDateJoining値(String型)を「DateInput」クラスのメンバー変数「dateOfJoining」(Date型)にバインドする方法Java dd/MM/yyyyと同じ形式のStringをDateオブジェクトに変換する方法。変換された日付は、StringではなくDateオブジェクトにある必要があります。

Jsonは以下のとおりです

{
 "dateOfJoining" : "03/04/2017"
}

PostmanでのサービスURLヒット-localhost/Rest/hello

Java-HandleRestRequest.JavaのRestServiceクラス

@RestController
public class HandleRestRequest
{

  @RequestMapping("\hello");
  public List setRequestParams(@RequestBody DateInput dateInput)
 {
   .......
  }
 }

 Pojo Class DateInput.Java

  public class DateInput
 {
  private  Date dateOfJoining;
   .......
  }

以下の形式でjsonから日付を送信すると、満たされていない入力としてそのエラーがスローされます

 {
  "dateOfJoining" : 04/04/2017
 }

だから私はそれを文字列形式として送信し、DateInput.JavaファイルのdateOfJoiningを文字列として変更してから、後で以下のように日付オブジェクトとして変換しようとしました

DateInput.JavaファイルをDateからStringに変更

 public class DateInput
 {
  private  String dateOfJoining;
   .......
 }

変更されたJSON

{
 "dateOfJoining" : "04/04/2017"
}

ユーザー入力を文字列から日付に変換するコード

 DateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
  String convertedDate = sdf.format(dateInput.getDateOfJoining());

必要な形式に変換しますが、戻り値の型はStringですが、DAOレイヤーを送信するDateオブジェクトが期待されます。だから私はsdf.parseを試してみました、その戻り値のDateオブジェクトが必要な形式ではありません

Date date = sdf.parse(sdf.format(dateInput.getDateOfJoining()));
output is like -  Tue Apr 04 00:00:00 IST 2017
expected is 04/04/2017 (with return type Date object).

DAOレイヤーはdd/MM/yyyy形式の日付オブジェクトとして入力を期待しているため、文字列を必要な形式の日付オブジェクトに変換する方法を教えてください

8
Phalani Kumar

編集:更新された質問に従って回答を更新します。

注釈を使用する@JsonFormat from Jackson Databind から日付パターンを指定します。

public class DateInput
 {
  @JsonFormat(shape=JsonFormat.Shape.STRING, pattern="dd-MM-yyyy")
  private  Date dateOfJoining;
   .......
  }
8
santosh-patil

コードを以下のコードスニペットに変更します

public List setRequestParams(@RequestParam("dateOfJoining")@DateTimeFormat(pattern="dd-MM-yyyy")  DateInput dateInput)
{
   ...
}
0
srikanth