2017-01-12 8 views
0

Я пытаюсь преобразовать JSON в пользовательский компонент. Но я столкнулся с проблемой, когда значение даты в JSON равно нулю.Формат даты GSON - обработка нулевой даты в разборе JSON

Valid JSON String, он становится конвертируются с любым вопросом, как и от и до настоящего времени имеет значение:

{"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 указано dec Lared с «Дата» тип данных

Ошибка 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 itsself для обработки даты нулевой:

  1. Declare от и до даты в бобе как строка типа данных
  2. Напишите метод пользовательского геттер в бобе, который будет делать синтаксический до возвращения даты, которая будет использоваться код, используя этот компонент
+3

У вас есть пустая строка, а не 'null' –

+0

Означает ли это, что если мы пройдем null, GSON позаботится об этом? – Vinay

+0

Наверное, нет. Вы можете получить исключение NullPointerException вместо ParseException –

ответ

0

Закрепление комментарии пришли от моего вопроса и размещения ответа от эти комментарии:

JSON строка, которая работала отлично с любым вопросом синтаксического анализа является:

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

После добавления необходимого условия в JS, который строит JSON передать нуль вместо пустой строки фиксированного вопроса.

Спасибо @ cricket_007 за то, что вы указали проблему, которая должна быть решена.