簡體   English   中英

GSON日期格式-在JSON解析中處理空日期

[英]GSON Date Format - Handling null date in the JSON parsing

我正在嘗試將JSON轉換為自定義bean。 但是當JSON中的日期值為null時,我遇到了問題。

有效的JSON字符串,它的轉換沒有任何問題,因為從日期到日期都具有值:

{"title":"1201 Box Title 1","fromdate":"01/02/2017","description":"1201 Box Title 1","todate":"01/26/2017"}

帶有錯誤的JSON字符串:起始日期為空

{"title":"1201 Box Title 1","fromdate":"","description":"1201 Box Title 1","todate":"01/26/2017"}

用於初始化的Java代碼:

 Gson testGson = new GsonBuilder().setDateFormat("MM/dd/yyyy").create();
 MyTestBean myTestBean = testGson.fromJson(jsonString, MyTestBean.class);

在bean中,fromdate和todate屬性用“日期”數據類型聲明。

錯誤堆棧跟蹤:

Exception in thread "main" com.google.gson.JsonSyntaxException: 
at com.google.gson.DefaultDateTypeAdapter.deserializeToDate(DefaultDateTypeAdapter.java:107)
at com.google.gson.DefaultDateTypeAdapter.deserialize(DefaultDateTypeAdapter.java:82)
at com.google.gson.DefaultDateTypeAdapter.deserialize(DefaultDateTypeAdapter.java:35)
at com.google.gson.TreeTypeAdapter.read(TreeTypeAdapter.java:59)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:93)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:176)
at com.google.gson.Gson.fromJson(Gson.java:755)
at com.google.gson.Gson.fromJson(Gson.java:721)
at com.google.gson.Gson.fromJson(Gson.java:670)
at com.google.gson.Gson.fromJson(Gson.java:642)
at JSONConverter.main(JSONConverter.java:15)
Caused by: java.text.ParseException: Unparseable date: ""
    at java.text.DateFormat.parse(DateFormat.java:366)
    at com.google.gson.DefaultDateTypeAdapter.deserializeToDate(DefaultDateTypeAdapter.java:105)
    ... 10 more

任何人都可以讓我如何以正確的方式處理此問題。

我嘗試克服此問題的一種方法如下,但想知道GSON自身是否有任何內置選項來處理空​​日期:

  1. 將bean中的起始和終止日期聲明為String數據類型
  2. 在Bean中編寫一個自定義的getter方法,該方法將在返回日期之前執行解析,該日期將由使用此Bean的代碼使用

合並評論來自我的問題,並根據這些評論給出答案:

可以很好地解決任何解析問題的JSON字符串是:

{"title":"1201 Box Title 1","fromdate":null,"description":"1201 Box Title 1","todate":"01/26/2017"}

在將JSON構造為傳遞null而不是空字符串的JS中添加所需條件后,解決了該問題。

感謝@ cricket_007指出需要解決的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM