Java Gson解析没有时区指示器的时间?
我正在尝试用Gson反序列化MyClass对象。MyClass在C#中有一个Java Gson解析没有时区指示器的时间?,java,android,json,gson,Java,Android,Json,Gson,我正在尝试用Gson反序列化MyClass对象。MyClass在C#中有一个DateTime字段,但在Java中的Date类型中有相同的字段。该对象由Json.NET序列化 Gson gson = new Gson(); gson.fromJson(myReader, MyClass.class); 这导致了一个例外 java.text.ParseException: Failed to parse date ["2016-11-05T14:23:00']: No time zone indi
DateTime
字段,但在Java中的Date
类型中有相同的字段。该对象由Json.NET序列化
Gson gson = new Gson();
gson.fromJson(myReader, MyClass.class);
这导致了一个例外
java.text.ParseException: Failed to parse date ["2016-11-05T14:23:00']: No time zone indicator (at offset 0)
显然,Json.NET将日期时间字段序列化为
“2016-11-05T14:23:00”
,而Gson认为这是一种错误的格式,因为它缺少时区。有没有办法告诉Gson只假设系统的当前时区,而不是抛出异常?我正在寻找一种简单的方法来解决这种情况,而不是自己编写一个完整的自定义类适配器。假设系统的时区对我来说是一个非常糟糕的移动-您将得到一个日期,它可能代表一个与服务器意义完全不同的时间点。该值实际代表什么-是a)特定时区的时间;b) 时间的瞬间;c) 没有特定时区的当地时间?这些应该在JSON IMO中以不同的方式表示,您应该让Java和.NET代码也反映出这种差异。最简单的方法是将其作为字符串
,并在代码中处理日期
解析,而不是将其留给GSON
。谢谢您的评论。如果没有简单的方法,我想我会修改Json.NET,改为“有没有办法告诉Gson?”是的,使用@JsonAdapter
。