sli*_*kas 2 json playframework ebean playframework-2.0
当我试图在Controller方法结果中返回JSON时,我在Ebean模型中正确格式化日期字段时遇到问题
ok(Json.toJson(userObj));
Run Code Online (Sandbox Code Playgroud)
我的代码示例:
@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;
...
}
Run Code Online (Sandbox Code Playgroud)
表位于postgresql数据库中 - 字段last_login是时间戳.
Json的结果是:
{"id":202,"last_login":1386775797494,...}
Run Code Online (Sandbox Code Playgroud)
有人可以解释一下如何让它发挥作用吗?
最好的问候,卢卡斯
在互联网上搜索后,我找到了两个解决方案:
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);
}
}
Run Code Online (Sandbox Code Playgroud)
模型中的注释和注释字段:
@JsonSerialize(using = JsonDateSerializer.class)
public Date last_login;
Run Code Online (Sandbox Code Playgroud)
此解决方案不灵活,因为您无法在@JsonSerialize注释中添加带日期格式的第二个参数,因此如果您想要几个日期格式,则必须创建下一个序列化类.
2. @ JsonFormat
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd hh:mm:ss")
Run Code Online (Sandbox Code Playgroud)
在这里,您可以在注释中定义模式,因此在我的情况下更灵活.
| 归档时间: |
|
| 查看次数: |
2844 次 |
| 最近记录: |