Java GSON Date格式-在JSON解析中处理空日期

Java GSON Date格式-在JSON解析中处理空日期,java,json,date,gson,Java,Json,Date,Gson,我正在尝试将JSON转换为自定义bean。但当JSON中的日期值为null时,我面临一个问题 有效的JSON字符串,转换时不会出现任何问题,因为from和to date都有值: {"title":"1201 Box Title 1","fromdate":"01/02/2017","description":"1201 Box Title 1","todate":"01/26/2017"} JSON字符串有错误:其中起始日期为空 {"title":"1201 Box Title 1","fro

我正在尝试将JSON转换为自定义bean。但当JSON中的日期值为null时,我面临一个问题

有效的JSON字符串,转换时不会出现任何问题,因为from和to date都有值:

{"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属性用“Date”数据类型声明

堆栈跟踪错误:

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自身是否有任何内置选项来处理空日期:

  • 将bean中的开始日期和结束日期声明为字符串数据类型
  • 在bean中编写一个自定义getter方法,该方法将在返回使用该bean的代码将使用的日期之前进行解析

  • 整合我的问题中的评论,并根据这些评论给出答案:

    没有任何解析问题的JSON字符串是:

    {"title":"1201 Box Title 1","fromdate":null,"description":"1201 Box Title 1","todate":"01/26/2017"}
    
    在JS中添加所需的条件后,将JSON构造为传递null而不是空字符串,从而修复了该问题


    感谢@cricket_007指出需要解决的问题。

    您有一个空字符串,而不是
    null
    这是否意味着如果我们传递null,GSON将处理此问题?可能不会。您可能会得到一个NullPointerException而不是ParseExceptionTanks cricket_007,传递null解决了这个问题。工作的JSON字符串如下:{“title”:“1201 Box title 1”,“fromdate”:null,“description”:“1201 Box title 1”,“todate”:“01/26/2017”}在bean中,它被设置为null,我们在使用该bean值时需要处理它。UI还需要进行更改,以将其作为null而不是空字符串传递。