我正在尝试将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属性使用“Date”数据类型
声明错误Stacktrace:
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中是否有任何内置选项来处理空日期:
答案 0 :(得分:0)
整合评论来自我的问题,并从这些评论中得出答案:
JSON字符串在没有任何解析问题的情况下工作正常:
{"title":"1201 Box Title 1","fromdate":null,"description":"1201 Box Title 1","todate":"01/26/2017"}
在JS中添加所需条件后,构造JSON以传递null而不是空字符串修复了问题。
感谢@ cricket_007指出需要解决的问题。