gpt4 book ai didi

java - GSON 抛出解析空日期字段的异常

转载 作者:搜寻专家 更新时间:2023-10-30 21:14:41 24 4
gpt4 key购买 nike

我正在使用 GSON 反序列化一些 JSON。JSON 是:

{
"employee_id": 297,
"surname": "Maynard",
"givenname": "Ron",
"lastlogin": "",

...

Employee 对象有一个日期字段 laSTLogin:

public class Employee {
private Integer employee_id;

private String surname;

private String givenname;

private Date lastlogin;

我遇到的问题是,当 laSTLogin 值未填充时,它是 JSON 中的空字符串,因此 GSON 解析器抛出:

java.text.ParseException: Unparseable date: ""
at java.text.DateFormat.parse(DateFormat.java:337)
at com.google.gson.internal.bind.DateTypeAdapter.deserializeToDate(DateTypeAdapter.java:79)
at com.google.gson.internal.bind.DateTypeAdapter.read(DateTypeAdapter.java:66)

解决这个问题的通常方法是什么?

最佳答案

如果您无法控制输入(即 JSon 生成部分)但知道非空时的格式,您应该只编写一个自己的反序列化器来处理空值,例如

    GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder.registerTypeAdapter(Date.class, new JsonDeserializer<Date>() {
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm");
@Override
public Date deserialize(final JsonElement json, final Type typeOfT, final JsonDeserializationContext context)
throws JsonParseException {
try {
return df.parse(json.getAsString());
} catch (ParseException e) {
return null;
}
}
});
Gson gson = gsonBuilder.create();

参见 https://sites.google.com/site/gson/gson-user-guide#TOC-Custom-Serialization-and-Deserializ

关于java - GSON 抛出解析空日期字段的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9184477/

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