Pha*_*mar 8 java rest json java.util.date
如何通过postman发送下面的JSON后,将dateOfJoining值(String类型)绑定到"DateInput"类中的成员变量"dateOfJoining"(日期类型).如何使用相同的格式dd/MM/yyyy将String中的String转换为Date对象.转换日期应该在Date对象中,而不是String.
Json如下所示
{
"dateOfJoining" : "03/04/2017"
}
Run Code Online (Sandbox Code Playgroud)
邮局中的服务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;
.......
}
Run Code Online (Sandbox Code Playgroud)
如果我以下面的格式从json发送日期,其投掷错误为不满意的输入
{
"dateOfJoining" : 04/04/2017
}
Run Code Online (Sandbox Code Playgroud)
所以我将它作为字符串格式发送,并将dateOfJoining更改为DateInput.java文件中的字符串,稍后我尝试将其转换为日期对象,如下所示
修改DateInput.java文件,从Date到String
public class DateInput
{
private String dateOfJoining;
.......
}
Run Code Online (Sandbox Code Playgroud)
修改了JSON
{
"dateOfJoining" : "04/04/2017"
}
Run Code Online (Sandbox Code Playgroud)
用于将用户输入从String转换为Date的代码
DateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
String convertedDate = sdf.format(dateInput.getDateOfJoining());
Run Code Online (Sandbox Code Playgroud)
它转换为所需的格式但返回类型是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).
Run Code Online (Sandbox Code Playgroud)
所以请帮助我如何将字符串转换为具有所需格式的日期对象,因为DAO层期望输入作为日期对象格式为dd/MM/yyyy
编辑:根据更新的问题更新答案.
使用注释@JsonFormat从杰克逊数据绑定到指定的日期模式.
public class DateInput
{
@JsonFormat(shape=JsonFormat.Shape.STRING, pattern="dd-MM-yyyy")
private Date dateOfJoining;
.......
}
Run Code Online (Sandbox Code Playgroud)
使用 JSON-B(包含在 Java EE 8 中),您可以执行以下操作:
class DateInput {
@JsonbDateFormat("dd/MM/yyyy")
public Date dateOfJoining;
}
Run Code Online (Sandbox Code Playgroud)
在我使用 Thorntail 2.4 进行的测试中,使用以下命令时不需要任何 ISO 格式注释java.util.Date:
{
"dateOfJoining" : "2019-04-28T14:45:15"
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
28841 次 |
| 最近记录: |