首页 > 解决方案 > 如何在 android 中使用 Gson 反序列化 LocalDateTime?

问题描述

现在 gson 将我的 Spring Boot 服务器中的 LocalDateTime 反序列化为

"localDateTime": {
    "date": {
        "day": //someday,
        "month": //somemonth
        "year": //someyear
    },
    "time": {
        "hours": //somehour,
        "minutes": //someminute,
        "seconds": //someseconds
    }
}

但是当我使用完全相同的 api 在 android 中反序列化它时,会出现这个异常:

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.scmuapp, PID: 13821
    java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.time.LocalDate.toString()' on a null object reference

这意味着 LocalDateTime 对象本身不是 null,但基础值是。现在我知道一个事实,即我的请求填充了 5 个对象,所有对象都具有日期和时间,并且值相等,因为它是脚本创建的,因此它们没有理由为空,但两者都是。我收到了一个页面通用对象,该对象定义为:

    private int pageSize, page, elements, totalPages, total;
    private List<T> content;

List 内容带来了数据,在这种情况下有一堆“基本值”,也就是字符串和整数,但是 LocalDateTime 只是没有正确解析。有任何想法吗?

标签: javaandroidjava-time

解决方案


我找到了一个理由。可能和安卓版本有关。我没有按说修复它,但基本上在我的项目中本地创建了一个 localdatetime 版本并且效果很好


推荐阅读