经过4个小时不间断地尝试解决这个问题,我决定在这里请求是否有人可以帮助我。
问题是,当我的Android客户端试图反序列化从服务器接收的数据时,会抛出"Unparseable: 1302828677828“异常。
我想知道是否可以使用Gson对毫秒格式的日期进行反序列化。
发布于 2018-05-13 21:34:40
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();
发布于 2020-06-08 16:30:39
下面的代码片段用于在处理JSON时将毫秒转换为日期。
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();
发布于 2015-01-14 16:31:45
当我试图用Android annotations库的Rest client反序列化DateTime字段时,我也遇到了同样的问题。作为解决方案,我创建了自定义GsonHttpMessageConverter
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客户端中定义它
@Rest(rootUrl = "http://192.168.1.1:8080", converters = {CustomGsonHttpMessageConverter.class})
public interface RestClient extends RestClientErrorHandling {
...
我希望这会对你有所帮助
https://stackoverflow.com/questions/5671373
复制相似问题