2016-06-21 2 views
4

Я использую CF11 с ORM и уровнем обслуживания для возврата объектов ORM. Мой Угловая приложение требует, чтобы даты JSON возвращается в одном из следующих форматов:Возврат объекта Date в 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"; 
} 

My service layer объект.

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

Пример JSON, возвращенный моим сервисом CFC.

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

CF11 + поддерживает пользовательские сериалайзер. Взгляните на документы. – Alex

+1

@Alex - Если вы знакомы с пользовательскими сериализаторами, вы должны написать это как ответ вместе с примером. Это было бы полезно для других, поскольку это действительно единственный вариант (помимо возврата строки, как они уже делают). – Leigh

+0

@Leigh Нет, лично я не полагаюсь на сериализацию CF вообще. Я просто знаю, что так нужно настраивать интегрированные веб-сервисы CF. Просто давая подсказку, как с этим бороться, таким образом, комментарий. – Alex

ответ

0

Можете ли вы использовать функцию 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");