javascript - Java中Date的JSON序列化及解析

标签 javascript java json simpledateformat

我目前正在开发一个序列化日期的前端。我似乎找不到正在使用的 ISO 标准以及如何使用 GSON 在 Java 中解决此问题。

当我使用默认序列化时,我的 Javascript 日期被格式化为 2016-02-26T11:06:36.646Z 之类的格式,令我困扰的是 .分钟后。我不确定这是什么格式,我希望它返回类似 +1:00 或类似的内容。

默认情况下,GSON 似乎无法处理此日期,如果使用 - 或 + 表示法,它在我的 mockMvc 测试(Spring)中运行良好。

有什么指导,这是什么格式,以及如何解决?由于名称不清楚,我在谷歌上搜索时遇到了麻烦

好吧,所以我更进一步,制作了一个像这样的消息转换器,它正在被点击,但仍然无法使用提供的可能选项转换我的日期字符串(如你所见,我添加了 4 个,其中我想要第一个工作)。

public class ExtendedGsonHttpMessageConverter extends GsonHttpMessageConverter
{
    private static final String[] DATE_FORMATS = new String[] {
            "yyyy-MM-dd'T'HH:mm:ss.SSSZ",
            "yyyy-MM-dd'T'HH:mmZ",
            "yyyy-MM-dd'T'HH:mm:ssZ",
            "yyyy-MM-dd'T'HH:mm:ss-'07:00'"
    };


    public ExtendedGsonHttpMessageConverter()
    {
        super();
        super.setGson(buildGson());
    }
    protected static Gson buildGson() {
        GsonBuilder gsonBuilder = new GsonBuilder();
        gsonBuilder.registerTypeAdapter(Date.class, new DateDeserializer());
        return gsonBuilder.create();
    }

    private static 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.GERMANY).parse(jsonElement.getAsString());
                } catch (ParseException e) {
                }
            }
            throw new JsonParseException("Unparseable date: \"" + jsonElement.getAsString()
                    + "\". Supported formats: " + Arrays.toString(DATE_FORMATS));
        }
    }
}

语言环境德国不是必需的。

The problems!

最佳答案

您可以尝试以下代码:

final GsonBuilder builder = new GsonBuilder();
final Gson gson = builder.setDateFormat("yyyy-MM-dd'T'HH:mm:ss-'07:00'")
                      .setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES)
                      .create();

https://github.com/kreneskyp/openconferenceware-android/blob/master/src/org/osb/GsonFactory.java

关于javascript - Java中Date的JSON序列化及解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35652575/

相关文章:

javascript - 声明后调用JS函数

javascript - 正则表达式替换不起作用

java - 为什么我的 foreach 循环不返回任何内容?

java - 无法启动 Eclipse Kepler

python - 在while循环中使用线程会导致LED闪烁的问题

javascript - AJAX 表单未提交并给出错误

javascript - 有没有办法隐藏我的 Facebook appID?

java - php mcrypt_encrypt 结果不等于java gnu-crypto

java - 如何在 java、tomcat、eclipse 中创建 JSON 数据的 Restful Web 服务

PHP JSON 返回两个不同函数的一个响应