Java GSON Date格式-在JSON解析中处理空日期
我正在尝试将JSON转换为自定义bean。但当JSON中的日期值为null时,我面临一个问题 有效的JSON字符串,转换时不会出现任何问题,因为from和to date都有值: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
{"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自身是否有任何内置选项来处理空日期:
整合我的问题中的评论,并根据这些评论给出答案: 没有任何解析问题的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而不是空字符串传递。