将json的日期属性反序列化为LocalDate
Posted
技术标签:
【中文标题】将json的日期属性反序列化为LocalDate【英文标题】:Deserialize date attribute of json into LocalDate 【发布时间】:2018-12-13 12:04:00 【问题描述】:我正在尝试使用 Gson 对格式为“2018-05-27”的 json 中的日期属性进行反序列化。我希望反序列化后日期为 LocalDate 格式。
对于 json 输入:
“身份证”:1, “名称”:“测试”, “开始日期”:“2018-01-01”, “结束日期”:“2018-01-05”,
startDate 和 endDate 出现错误:
java.lang.IllegalStateException: 应为 BEGIN_OBJECT 但为 STRING
【问题讨论】:
Java 8 LocalDateTime deserialized using Gson的可能重复 "当您反序列化 LocalDate[Time] 属性时会发生错误,因为 GSON 无法解析该属性的值,因为它不知道 LocalDate[Time] 对象。" 【参考方案1】:我们可以这样做:
private static final Gson gson = new GsonBuilder().registerTypeAdapter(LocalDate.class, new JsonDeserializer<LocalDate>()
@Override
public LocalDate deserialize(JsonElement json, Type type, JsonDeserializationContext jsonDeserializationContext) throws JsonParseException
return LocalDate.parse(json.getAsJsonPrimitive().getAsString());
).create();
然后
YourClassName yourClassObject = gson.fromJson(msg, YourClassName.class);
【讨论】:
以上是关于将json的日期属性反序列化为LocalDate的主要内容,如果未能解决你的问题,请参考以下文章
Spring boot:JSON将带有时区的日期和时间反序列化为LocalDateTime
Spring Boot LocalDate 字段序列化和反序列化
如何使用客户端的时区将 asp.net 日期时间反序列化为 JSON 日期时间