使用两个 DateFormat 进行 Gson 到 json 的转换

2023-12-31

我的服务器 JSON 返回两种不同类型的 DateFormat。 “MMM dd, yyyy”和“MMM dd, yyyy HH:mm:ss”

当我使用以下内容转换 JSON 时,效果很好:

Gson gson = new GsonBuilder().setDateFormat("MMM dd, yyyy").create();

但是当我想要详细的日期格式并将其更改为这样时,它会抛出异常 com.google.gson.JsonSyntaxException: Mar 21, 2013

Gson gson = new GsonBuilder().setDateFormat("MMM dd, yyyy HH:mm:ss").create();

gson 有没有办法处理两种不同的 DateFormat 进行 Json 转换?


我面临着同样的问题。这是我通过自定义反序列化的解决方案:

new GsonBuilder().registerTypeAdapter(Date.class, new DateDeserializer());

private static final String[] DATE_FORMATS = new String[] {
        "MMM dd, yyyy HH:mm:ss",
        "MMM dd, yyyy"
};


private class DateDeserializer implements JsonDeserializer<Date> {

    @Override
    public Date deserialize(JsonElement jsonElement, Type typeOF,
            JsonDeserializationContext context) throws JsonParseException {
        for (String format : DATE_FORMATS) {
            try {
                return new SimpleDateFormat(format, Locale.US).parse(jsonElement.getAsString());
            } catch (ParseException e) {
            }
        }
        throw new JsonParseException("Unparseable date: \"" + jsonElement.getAsString()
                + "\". Supported formats: " + Arrays.toString(DATE_FORMATS));
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用两个 DateFormat 进行 Gson 到 json 的转换 的相关文章

随机推荐