gpt4 book ai didi

java - 使用 GSON 反序列化两种不同的日期格式

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:25:26 28 4
gpt4 key购买 nike

我使用 googles GSON 库使用客户端 JSON API 来处理序列化/反序列化。这被证明是有问题的,因为在 API 的 json 实体中有许多日期格式分散在 API 中。

这方面的一些例子如下...

“2014-02-09”

“15/10/1976”

“2014-02-09T07:32:41+00:00”

我无法控制 API,因为它由客户开发并且已经被其他方使用。似乎我可以将 GSON 设置为使用单一日期格式,但我无法让它在每个字段的基础上解析日期。

我原以为 GOSN 会为此提供注释,但我似乎找不到。关于如何设置任何人的任何想法?

最佳答案

由于您的 POJO 中有多个 Date 字段,并且传入的 JSON 具有不同格式的这些日期,因此您需要为 Date 编写自定义反序列化程序可以处理这些格式。

class DateDeserializer implements JsonDeserializer<Date>
{
@Override
public Date deserialize(JsonElement je, Type type, JsonDeserializationContext jdc) throws JsonParseException
{
String myDate = je.getAsString();
// inspect string using regexes
// convert string to Date
// return Date object
}

}

您可以在创建 Gson 实例时将其注册为类型适配器:

Gson gson = new GsonBuilder()
.registerTypeAdapter(Date.class, new DateDeserializer())
.create();

当然,您也可以只为您的 POJO 编写一个自定义反序列化程序,然后自己从解析树填充所有内容。

另一种选择是在您的 POJO 中将它们简单地设置为 String,然后让每个字段的 getter 将它们转换为 Date

除此之外,如果您不完全依赖于使用 Gson,Jackson JSON 解析器(默认情况下)会在反序列化过程中使用您的 POJO 的 setter ,这将使您可以明确控制设置每个字段。

关于java - 使用 GSON 反序列化两种不同的日期格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21663120/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com