我有一个场景,我需要将动态属性以用户使用休息服务给出的 HashMap 的形式存储到数据库中。该动态属性定义为
HashMap<String, Object> attr = new HashMap<>();
现在,我必须根据业务逻辑将对象转换为其各自的运行时数据类型。到目前为止,我能够成功转换字符串、数字,但 Date
造成了麻烦。这是我的转换逻辑。
input = attr.get(label);
if (input instanceof String) {
// logic 1
}
else if (input instanceof Number) {
// logic 2
}
else if (input instanceof Date) {
// logic 3
}
问题是,当以任何日期格式(在我的例子中为 zulu 格式)给出日期时,jacksonjson 转换器无法解析它并抛出错误,指出无法解析输入字符串。
我知道它是一个 Date
对象。我本可以编写一个 JsonDeserializer
并用它注释 Date
对象,但由于它是 HashMap
中的一个 Object
> 我应该如何实现这一目标。
我还 try catch 该日期字符串并使用 SimpleDateFormat
解析它,但失败了,因为异常发生在该逻辑之前。
最佳答案
如果您要从 json 解析日期,您可能应该这样做。在 JSON 中,您的日期是字符串。您必须使用 SimpleDateFormat 将日期字符串转换为实际日期格式。它不会找到输入实例日期,并且您无法将 json 解析为实际日期。例如,如果您的 json 如下所示,
{'name':'firstname','date':'14/02/2019'}
您现在可以像这样将日期转换为实际日期
SimpleDateFormat formatter1=new SimpleDateFormat("dd/MM/yyyy");
Date date1=formatter1.parse(input); //here input is taken from your case which represent date
关于java - 将 json 字符串转换为日期对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54683445/