【问题标题】:Returning a Date object in JSON using a specific format使用特定格式返回 JSON 中的 Date 对象
【发布时间】:2016-10-22 09:46:28
【问题描述】:

我正在使用带有 ORM 和服务层的 CF11 来返回 ORM 对象。我的 Angular 应用要求 JSON 日期以以下两种格式之一返回:

'yyyy/MM/dd' (i.e., '2014/08/25')
'yyyy/MM/dd HH:mm:ss' (i.e., '2014/08/25 16:35:10')

我的服务 CFC 将对象数组作为 JSON 字符串返回,但 Coldfusion 以如下字符串格式序列化日期:April, 21 2016 04:45:56。这似乎是在后台调用的 SerializeJson() 函数的结果。

有没有办法让 ORM CFC 返回特定 JSON 字符串格式的日期对象?作为一种解决方法,我创建了一个名为 startTimeAsJson 的新属性,它使用 getter 函数返回一个字符串。但我更愿意找到一种方法让 CF 以我想要的格式序列化日期对象。

这是我的 ORM 对象。

component persistent="true" table="course" accessors="true"  
{
    property name="startTime" column="start_time" type="date" ormtype="timestamp" notnull="false";
}

我的服务层对象。

component output="false" hint="CFBuilder-Generated:test_date" 
{
  remote orm.course[] function getAllCourses(string SortColumn = "STARTDATE DESC")
    {
        return entityLoad("course", {}, arguments.sortcolumn);
    }
}

我的服务 CFC 返回的 JSON 示例。

[{"startTime":"May, 09 2016 08:25:24"}]

【问题讨论】:

  • CF11+ 支持自定义序列化程序。查看文档。
  • @Alex - 如果您熟悉自定义序列化程序,您应该将其作为答案连同示例一起写下来。这对其他人会有所帮助,因为它确实是唯一的选择(除了返回一个字符串,因为他们已经这样做了)。
  • @Alex - 嘿,我们两个。我只浏览了the docs,但似乎它可能比单个字段的价值更麻烦。除非你能做出通用和可重用的东西。
  • @SamM 可能值得在这里为未来的路人发布您的解决方案
  • 你们中的一个人应该发布最终代码作为“答案”以关闭线程,并帮助下一个人:)

标签: coldfusion coldfusion-11


【解决方案1】:

你可以在返回值之前使用 CF 的 dateTimeFormat() 来格式化你想要的日期吗? http://cfdocs.org/datetimeformat
有点像……

local.response = entityLoad("course", {}, arguments.sortcolumn);  
local.response = dateTimeFormat(local.response, "yyyy/mm/dd HH:nn:ss");  
return local.response;  

或者,在一行中:

return dateTimeFormat(entityLoad("course", {}, arguments.sortcolumn), "yyyy/mm/dd HH:nn:ss");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多