Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Gson解析没有时区指示器的时间?_Java_Android_Json_Gson - Fatal编程技术网

Java Gson解析没有时区指示器的时间?

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

我正在尝试用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 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