首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring-roo REST JSON控制器处理日期字段

Spring-roo REST JSON控制器处理日期字段
EN

Stack Overflow用户
提问于 2011-11-29 21:59:11
回答 1查看 2K关注 0票数 4

我有一个数据实体,我以两种方式使用它,当页面加载时,我用它的一些数据填充一个表,当您单击该列的一行时,我AJAX该项目的详细信息并将它们显示在表单字段中。我在服务器端使用Spring-Roo生成的REST端点,在客户端使用Backbone.js。

当表加载时,日期字段具有我期望的格式,它直接来自我的MySQL数据库("yyyy-MM-dd")。当我获得AJAX数据时,日期字段以Unix时间值的形式出现(例如"1323666000000")。

我可以在客户端转换它,但那很愚蠢。你知道怎样才能让我的json控制器不这么做吗?

我尝试将这些字段放入我的.java文件中,并处理@DateTimeFormat注释,但我看不出这有什么不同。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-12-12 23:07:55

您可以将日期转换为JSON响应所需的任何格式。

在您的示例中,java.util.Date类型字段一直使用默认的JSON date转换器。这基本上就是Spring Roo为您生成的内容。看一看你的*_Roo_Json方面,你会发现smth。如下所示:

代码语言:javascript
复制
public java.lang.String PizzaOrder.toJson() {
    return new JSONSerializer().exclude("*.class").serialize(this);
}

这样的实现使用flexjson.transformer.BasicDateTransformer类为您转换日期。它是这样实现的:

代码语言:javascript
复制
public class BasicDateTransformer extends AbstractTransformer {
    public void transform(Object object) {
        getContext().write(String.valueOf(((Date) object).getTime()));
    }
}

您想要的是使用一个不同的、功能更强大的转换器。幸运的是,它是你的Roo自带的,叫做flexjson.transformer.DateTransformer。现在,为了正确地格式化日期,只需将默认日期替换为新的转换器,例如:

代码语言:javascript
复制
public java.lang.String PizzaOrder.toJson() {
    return new JSONSerializer().exclude("*.class")
             .transform(new DateTransformer("MM/dd/yyyy"), Date.class)
             .serialize(this);
}

这就是全部:-)

要知道,您还可以对不同的字段应用不同的Date (而不仅仅是)转换,如下所示:

代码语言:javascript
复制
transform(new DateTransformer("MM/dd/yyyy"), "person.birthday")

有关flexjson的更多信息,请访问FLEXJSON project page

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8311962

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档