我应该使用哪种模式作为日期格式1418805300000-0100? (时间戳和时区)
GsonBuilder().setDateFormat("?????????????-Z")
解决方案:
使用适配器创建新的GSON
private static Gson createGson(){
return new GsonBuilder().disableHtmlEscaping()
.registerTypeHierarchyAdapter(Date.class, new DateTimeSerializer())
.registerTypeHierarchyAdapter(Date.class, new DateTimeDeserializer())
.create();
}
public static MyClass fromJson(String json) {
return createGson().fromJson(json, MyClass.class);
}
public String toJson() {
return createGson().toJson(this);
}
JSON Serializer
private static class DateTimeSerializer implements JsonSerializer<Date> {
@Override
public JsonElement serialize(Date src, Type typeOfSrc, JsonSerializationContext context) {
// hodgie code
return new JsonPrimitive(src.getTime() + new SimpleDateFormat("Z").format(src));
}
}
解串器
private static class DateTimeDeserializer implements JsonDeserializer<Date> {
@Override
public Date deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
// hodgie code
return new Date(Long.valueOf((json).getAsString().substring(0, 13)));
}
}
答案 0 :(得分:1)
GsonBuilder#setDateFormat(String)
使用String
作为参数创建SimpleDateFormat
个实例。 SimpleDateFormat
未提供用于生成时间戳的任何模式。 setDateFormat
您将无法实现所需目标。自定义TypeAdapter
似乎合适。