Kim*_*i95 4 java timezone android gson datetime-parsing
我在使用 Gson 时遇到了奇怪的错误。
我是这样创建的
mGson = new GsonBuilder().registerTypeAdapter(beelineItemType, new ItemsDeserializer()).setDateFormat("yyyy-MM-dd'T'HH:mm:ss").create();
Run Code Online (Sandbox Code Playgroud)
我的 json 对象是这样的:
"EpgStartDate" : "2018-08-16T18:00:00"
Run Code Online (Sandbox Code Playgroud)
但是当我尝试反序列化它时,我收到此错误:
ccom.google.gson.JsonSyntaxException: 2018-08-16T06:00:00
caused by: java.text.ParseException: Failed to parse date ["2018-08-16T06:00:00']: No time zone indicator (at offset 0)
Caused by: java.lang.IllegalArgumentException: No time zone indicator
Run Code Online (Sandbox Code Playgroud)
我不明白在哪里放置时区以及如何放置。我在塞尔维亚,所以应该在哪里、如何以及什么时区。如果有人可以提供帮助那就太好了:D
你应该像这样制作反序列化器
public class DateDeserializer implements JsonDeserializer<Date> {
@Override
public Date deserialize(JsonElement element, Type arg1, JsonDeserializationContext arg2) throws JsonParseException {
String date = element.getAsString();
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
format.setTimeZone(TimeZone.getTimeZone("GMT"));
try {
return format.parse(date);
} catch (ParseException exp) {
System.err.println(exp.getMessage());
return null;
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后注册上面的解串器:
GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder.registerTypeAdapter(Date.class, new DateDeserializer());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7702 次 |
| 最近记录: |