首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >"Unparseable date: 1302828677828“正在尝试用Gson反序列化从服务器收到的毫秒格式的日期

"Unparseable date: 1302828677828“正在尝试用Gson反序列化从服务器收到的毫秒格式的日期
EN

Stack Overflow用户
提问于 2011-04-15 08:57:04
回答 5查看 35.4K关注 0票数 81

经过4个小时不间断地尝试解决这个问题,我决定在这里请求是否有人可以帮助我。

问题是,当我的Android客户端试图反序列化从服务器接收的数据时,会抛出"Unparseable: 1302828677828“异常。

我想知道是否可以使用Gson对毫秒格式的日期进行反序列化。

EN

回答 5

Stack Overflow用户

发布于 2018-05-13 21:34:40

代码语言:javascript
运行
复制
JsonSerializer<Date> serializer= new JsonSerializer<Date>() {
  @Override
  public JsonElement serialize(Date src, Type typeOfSrc, JsonSerializationContext 
             context) {
    return src == null ? null : new JsonPrimitive(src.getTime());
  }
};

JsonDeserializer<Date> deserializer= new JsonDeserializer<Date>() {
  @Override
  public Date deserialize(JsonElement json, Type typeOfT,
       JsonDeserializationContext context) throws JsonParseException {
    return json == null ? null : new Date(json.getAsLong());
  }
};

Gson gson = new GsonBuilder()
   .registerTypeAdapter(Date.class, serializer)
   .registerTypeAdapter(Date.class, deserializer).create();
票数 2
EN

Stack Overflow用户

发布于 2020-06-08 16:30:39

下面的代码片段用于在处理JSON时将毫秒转换为日期。

代码语言:javascript
运行
复制
    GsonBuilder gsonBuilder = new GsonBuilder();
    // Adapter to convert long values to date types
    gsonBuilder.registerTypeAdapter(Date.class, new JsonDeserializer<Date>() {
        public Date deserialize(JsonElement jsonElement, Type typeOfObj, JsonDeserializationContext context)
               throws JsonParseException {
                   //Converting milliseconds to current Date. (instead of 1970)
                return new Date(jsonElement.getAsLong() * 1000);
            }
        });
    Gson gson = gsonBuilder.setPrettyPrinting().create();
票数 1
EN

Stack Overflow用户

发布于 2015-01-14 16:31:45

当我试图用Android annotations库的Rest client反序列化DateTime字段时,我也遇到了同样的问题。作为解决方案,我创建了自定义GsonHttpMessageConverter

代码语言:javascript
运行
复制
public class CustomGsonHttpMessageConverter extends GsonHttpMessageConverter {

    public CustomGsonHttpMessageConverter() {
        // 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());
            }
        });

        setGson(builder.create());
    }
}

并在rest客户端中定义它

代码语言:javascript
运行
复制
@Rest(rootUrl = "http://192.168.1.1:8080", converters = {CustomGsonHttpMessageConverter.class})
public interface RestClient extends RestClientErrorHandling {
...

我希望这会对你有所帮助

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5671373

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档