json - 在 Json.toJson() 之后 Play ebean 的 Date 字段格式

标签 json playframework playframework-2.0 ebean

当我尝试在 Controller 方法结果中返回 JSON 时,我在 Ebean 模型中正确格式化日期字段时遇到问题

ok(Json.toJson(userObj));

我的代码示例:

@Entity
@Table(name = "user")
public class User extends Model {
    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "user_id_seq")
    public Integer id;

    @Formats.DateTime(pattern = "yyyy-MM-dd hh:mm:ss")
    public Date last_login;
...
}

表位于 postgresql 数据库中 - 字段last_login 是时间戳。

Json 结果是:

{"id":202,"last_login":1386775797494,...}

有人可以解释一下如何让它发挥作用吗?

最诚挚的问候, 卢卡斯

最佳答案

在网上搜索后,我找到了两个解决方案:

1.创建自定义序列化器,例如:

JsonDateSerializer 类:

public class JsonDateSerializer extends JsonSerializer<Date> {
    private static final DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");

    @Override
    public void serialize(
            Date date, JsonGenerator jgen, SerializerProvider provider) throws IOException {

        String formattedDate = dateFormat.format(date);
        jgen.writeString(formattedDate);
    }
}

并在模型中注释字段:

@JsonSerialize(using = JsonDateSerializer.class)
public Date last_login;

此解决方案并不灵活,因为您无法在 @JsonSerialize 注释中放置带有日期格式的第二个参数,因此如果您想要两种日期格式,则必须创建下一个序列化类。

2.@JsonFormat

@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd hh:mm:ss")

在这里您可以在注释中定义模式,因此在我的情况下更加灵活。

关于json - 在 Json.toJson() 之后 Play ebean 的 Date 字段格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20525942/

相关文章:

javascript - jQuery/JavaScript 循环遍历 json 数据结果

python - Kivy:使用 kivy.storage.jsonstore 在另一个 JSON 对象中添加 JSON 对象

java - 在 Play 框架中使用 java 类与 Scala 作为 Json 对象返回

java - 如何从 i18n 获取自定义消息到模型

java - Eclipse:Play Framework 2 - 如何从根文件夹隐藏或移动依赖项

javascript - JSON 键的小数点不按顺序排列

javascript - 在 Javascript 中解析 Laravel JSON 对象抛出错误

scala - 如何更改 play/sbt 下自定义配置的设置值?

scala - 如何在 play 2.0 模板中格式化数字/日期?

java - 如何在 Play 中切换生产和开发数据库配置?