从邮递员(休息服务)如何将 json 日期(字符串格式)发送到接受日期对象的 java

新手上路,请多包涵

通过邮递员发送以下JSON后,如何将dateOfJoining值(字符串类型)绑定到“DateInput”类中的成员变量“dateOfJoining”(日期类型)。如何将 String 转换为具有相同格式 dd/MM/yyyy 的 java 中的 Date 对象。转换后的日期应该在 Date 对象中而不是 String 中。

Json如下所示

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

邮递员中的服务 URL – localhost/Rest/hello

Java 中的 RestService 类 - HandleRestRequest.java

 @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 但预期是 Date 对象发送 DAO 层。所以我尝试了 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 的日期对象

原文由 Phalani Kumar 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 367
1 个回答

编辑:根据更新的问题更新答案。

使用来自 Jackson Databind 的注释 @JsonFormat 来指定日期模式。

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

原文由 santosh-patil 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题