Как редактировать формат даты с @SerializableName в Gson? - PullRequest
0 голосов
/ 18 мая 2019

Я использую Google Gson для отображения данных из файла json в Java.Но я сталкиваюсь с ошибкой в ​​формате даты.

Это ошибка, которую я видел;

Exception in thread "main" com.google.gson.JsonSyntaxException: Sat May 18 15:30:07 +0000 2019
at com.google.gson.internal.bind.DateTypeAdapter.deserializeToDate(DateTypeAdapter.java:87)
at com.google.gson.internal.bind.DateTypeAdapter.read(DateTypeAdapter.java:75)
at com.google.gson.internal.bind.DateTypeAdapter.read(DateTypeAdapter.java:46)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:131)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:222)
at com.google.gson.Gson.fromJson(Gson.java:927)
at com.google.gson.Gson.fromJson(Gson.java:892)
at com.google.gson.Gson.fromJson(Gson.java:841)
at com.google.gson.Gson.fromJson(Gson.java:813)
at app.producer.TwitterKafkaProducer.run(TwitterKafkaProducer.java:75)
at app.App.main(App.java:13)
Caused by: java.text.ParseException: Failed to parse date ["Sat May 18 15:30:07 +0000 2019"]: Invalid number: Sat 
at com.google.gson.internal.bind.util.ISO8601Utils.parse(ISO8601Utils.java:274)
at com.google.gson.internal.bind.DateTypeAdapter.deserializeToDate(DateTypeAdapter.java:85)
... 10 more
Caused by: java.lang.NumberFormatException: Invalid number: Sat 
at com.google.gson.internal.bind.util.ISO8601Utils.parseInt(ISO8601Utils.java:311)
at com.google.gson.internal.bind.util.ISO8601Utils.parse(ISO8601Utils.java:129)
... 11 more

Здесь я сериализовал входящий json:

@SerializedName("created_at")
private Date createdAt;

Myjson объект:

{
 "created_at": "Sat May 18 16:11:36 +0000 2019",
 "id": 1129781592514355205
}

Я заметил, что ошибка была вызвана сбоем форматов.Но в моем исследовании о том, как это исправить, у меня нет никаких выводов.Буду признателен, если вы поможете мне с этим.

1 Ответ

0 голосов
/ 18 мая 2019

Из этого исключения

Caused by: java.lang.NumberFormatException: Invalid number: Sat

Кажется, ваш Gson неправильно настроен для формата ввода Sat May 18 15:30:07 +0000 2019, поэтому вы должны сделать что-то вроде этого:

Gson gson = new GsonBuilder().setDateFormat("E MMM dd HH:mm:ss Z yyyy").create();
...