[java] GSON - 日期格式



Answers

Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'").create();

以上格式对我来说似乎更好,因为它精确到毫秒级。

编辑格式以引用'Z'

Question

我试图在Gson输出中使用自定义日期格式,但.setDateFormat(DateFormat.FULL)似乎不起作用,它与.registerTypeAdapter(Date.class, new DateSerializer())

这就像Gson不关心对象“日期”并打印它的方式。

我该如何改变它?

谢谢

编辑:

@Entity
public class AdviceSheet {
  public Date lastModif;
[...]
}

public void method {
   Gson gson = new GsonBuilder().setDateFormat(DateFormat.LONG).create();
   System.out.println(gson.toJson(adviceSheet);
}

我总是使用java.util.Date ; setDateFormat()不起作用:(




如果你讨厌Inner类,通过利用函数接口你可以在Java 8中用lambda表达式编写更少的代码。

JsonDeserializer<Date> dateJsonDeserializer = 
     (json, typeOfT, context) -> json == null ? null : new Date(json.getAsLong());
Gson gson = new GsonBuilder().registerTypeAdapter(Date.class,dateJsonDeserializer).create();



这根本不起作用。 JSON中没有日期类型。 我会推荐序列化到ISO8601来回(格式不可知论者和JS compat)。 考虑你必须知道哪些字段包含日期。




Links



Tags

java java   gson