如何配置 GSON 以识别 ISO 日期字段并将其解析为日期对象?

问题描述 投票:0回答:0

此代码:

Map<String, Object> map = new HashMap<>();
map.put("now", new Date());

Gson gson = new GsonBuilder()
        .setDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")
        .create();
String json = gson.toJson(map);
System.out.println(json);

产生类似

{"now":"2023-03-11T12:34:56.789Z"}

的东西

反之,撤消这样的动作:

Map<String, Object> map = gson.fromJson(json, new TypeToken<Map<String, Object>>(){}.getType());

无法生成输入数据 - 而是提供像

{"now":"2023-03-11T12:34:56.789Z"}
.

这样的输出

日期字符串保留为字符串,而不是转换回

Date
对象。

如何将字符串解析回

Map
以便 GSON 识别 日期字符串并将其解析回
Date
对象。

正则表达式模式

"\\d{1,4}-\\d{2}-\\d{2}T\\d{2}\\:\\d{2}\\:\\d{2}\\.\\d{3}Z"
与日期模式大致相关。

基本上,我需要通过配置告诉GSON: 如果字符串与正则表达式部分 (DATE_PATTERN) 匹配,则将其反序列化为日期。

注意:我知道反序列化为带有日期字段的类会正常工作,因为字段类型给了 GSON 一个提示。我需要 GSON 简单地根据字符串的格式来确定目标类型。

java json gson
© www.soinside.com 2019 - 2024. All rights reserved.