经过4个小时的不间断尝试来解决问题,我决定在这里询问是否有人可以帮助我。
问题是我的Android客户端在尝试反序列化从服务器接收到的数据时抛出“ Unparseable:1302828677828”异常。
我想知道是否可以使用Gson反序列化毫秒格式的日期。
阿方索的评论:
终于我得到了解决方案:
// Creates the json object which will manage the information received
GsonBuilder builder = new GsonBuilder();
// Register an adapter to manage the date types as long values
builder.registerTypeAdapter(Date.class, new JsonDeserializer<Date>() {
public Date deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
return new Date(json.getAsJsonPrimitive().getAsLong());
}
});
Gson gson = builder.create();
奇怪的是下面的测试用例会失败。有人知道为什么吗?
我正在尝试将DatePicker日期格式化为简单的数据格式(“yyyy-MM-dd HH: mm: ss Z”)。有人告诉我,我需要使用简单的数据格式将其解析为日期对象-简单的数据格式(“yyyy-MM-dd”),然后将其格式化为我需要的内容,如下所示。但是,我在尝试捕捉块中收到错误“重复局部变量eDate”。任何专家都可以查看我的代码并提出建议吗? 已更新
问题内容: 我正在尝试获取格式化的日期,包括毫秒数。 唯一的问题是我不断赚到000000 例如 2013/07/28 11:26:14.000000 问题答案: php.net说: 微秒(在PHP 5.2.2中添加)。请注意,由于它采用整数参数,因此将始终生成,而如果使用微秒创建,则支持微秒。 所以使用起来很简单: 推荐和使用参考类: 注意是微秒(1秒= 1000000 µs)。 来自php.ne
据我所知,gson不会自动将java.util.Date对象序列化和反序列化为ISO字符串,比如“yyyy-mm-ddthh:mm:ssz”或“2014-04-15t18:22:00-05:00”。因此,为了让我在客户机(使用gson改型)和服务器之间正确地通信日期,我需要指定gson的日期格式。以下是我所做的: 添加。SetDateFormat行就足以让gson正确地将时间戳字符串反序列化为日期
它使用Jackson V2.6.6@JSONFormat注释来反序列化通过网络传输的JSON中的“时间戳”字段。 我所看到的是,当值类似于: “2017-01-09T21:49:26.70Z” 我可以做些什么来修复这个模式,使它在接受小数点后第二位的小数位数方面变得灵活呢?我知道Java数据格式化中有一个宽松的概念:https://docs.oracle.com/javase/8/docs/api
下面是一个演示这个问题的小提琴:https://dotnetfiddle.net/yi47ey 问题是,我们的客户机正在崩溃,因为他们期望一致的格式(例如,总是返回毫秒,即使在) 我找到了这个引用:https://www.w3.org/tr/note-datetime 其中规定: 允许几分之一秒的采用标准必须同时规定最小位数(大于或等于1的数字)和最大位数(最大位数可以说是“无限制”)。 那么,这