首页 > 解决方案 > 无法从 JSON 中解析“日期”

问题描述

我在 REST 响应中有以下 JSON 字符串:

"09:41:50 CET"

对于相应的 POJO 映射器类,该字段具有 Date 类型。所以我尝试过 Jackson 和 GSON 将 JSON 映射到 Java 对象,但都失败了,并显示以下消息:

GSON: java.text.ParseException: Failed to parse date ["09:41:50 CET"]: Invalid number: 09:4

Jackson: InvalidFormatException: Cannot deserialize value of type `java.util.Date` from
                                 String "09:41:50 CET": not a valid representation

遗憾的是,我无法在 POJO 类中将类型修改为字符串或其他任何内容,因为我从 mvn 依赖项中获取了这些 POJO 类。

标签: javajsondatejacksongson

解决方案


试试这个:

public static void main(String[] args) throws ParseException {

    String jsonStr = "{ \"date\" : \"09:41:50 CET\" }";
    Gson gson = new GsonBuilder().setDateFormat("HH:mm:ss").create();
    JsonElement element = gson.fromJson (jsonStr, JsonElement.class);

    OnlyDate date =gson.fromJson(element, new TypeToken<OnlyDate>(){}.getType());

    System.out.println(date.getDate());

}

我的示例 DTO 是:

public class OnlyDate implements Serializable{
    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    @SerializedName("date")
    private Date date ;

    public Date getDate() {
        return date;
    }

    public void setDate(Date date) {
        this.date = date;
    }


}

您必须指定 gson 元素的 dateFormat


推荐阅读