Map JSON返回FullCalendar jQuery库是否可用?

时间:2013-10-30 21:14:44

标签: javascript json fullcalendar

FullCalendar jQuery库(http://arshaw.com/fullcalendar/)满足了我对t的需求。它似乎正是我需要的。但是,我无法弄清楚如何配置它以使用现有的JSON服务返回:

{
    "SystemResponse": null,
    "Events": 
    {        
        "systemMessageField": "",
        "otherMessageField": "",
        "eventsField": 
        [
            {
                "additionalTextField": "",
                "eventTitle": "eventTitle1",
                "eventCommentsField": "",
                "eventDateTimeField": "/Date(1379953200000-0500)/",
                "eventDateTimeFieldSpecified": true,
                "eventEndDateTimeField": "/Date(1379954400000-0500)/",
                "eventSourceIDField": "2",
                "eventSourceNumberField": "",
                "eventTimeZoneField": "CDT",
                "eventTypeField": "9109"
            },
            {
                "additionalTextField": "Add Text",
                "eventTitle": "eventTitle1",
                "eventCommentsField": "",
                "eventDateTimeField": "/Date(1379975400000-0500)/",
                "eventDateTimeFieldSpecified": true,
                "eventEndDateTimeField": "/Date(1379979000000-0500)/",
                "eventSourceIDField": "3",
                "eventSourceNumberField": "",
                "eventTimeZoneField": "CDT",
                "eventTypeField": "U123"
            }
        ]
    }
}

我相信该服务应该返回类似'Ideal'FullCalendar Return:

的内容
[
    "0",
    {
        "allDay": "",
        "title": "Test event",
        "id": "821",
        "end": "2011-06-06 14:00:00",
        "start": "2011-06-06 06:00:00"
    },
    "1",
    {
        "allDay": "",
        "title": "Test event 2",
        "id": "822",
        "end": "2011-06-10 21:00:00",
        "start": "2011-06-10 16:00:00"
    }
]

有没有办法利用FullCalendar功能来获取我的原始源json和map如下:

eventDateTimeField->启动
eventEndDateTimeField->结束
eventTitle->标题

然后FullCalendar控件应该能够使用我原来的事件服务来创建事件(哦,并解析那些讨厌的json日期......)

1 个答案:

答案 0 :(得分:0)

您有正确的想法,将结果从JSON Feed映射到FullCalendar的事件对象属性。

必须确保allDay是一个布尔值,这意味着您返回true或false而不带引号(使用浏览器确保它显示“allDay”:true或“allDay”: false, true false 周围没有任何引号!)。要么根本不回复它,只要让你的默认值适用于所有事件(不太实用)。

标准化一种日期格式也很有用,我发现UNIX日期/时间格式是FullCalendar和数据库后端之间最可靠的通信方式。但是,请注意您需要在几秒钟内(10位数,这些天)。从您的示例中,我可以看到它是以毫秒为单位。您需要除以1,000或将其视为字符串,并取最左边的10个字符。我建议您以UTC格式存储数据,并在数据库外进行任何时区操作。此操作适用于检索存储日期。

如果您无法更改现有JSON提要中的编码,则可以创建一个中间“侦听器”以从当前提要中检索数据,对其进行操作(确保allDay实际上是一个布尔值并反映您的活动状态,重新格式化日期/时间数据并翻译元素的名称。然后,您的FullCalendar事件似乎来自您的中介通过查询现有JSON提要创建的JSON提要。

FullCalendar存储所有属性,无论它是否使用它们,因此您仍然可以根据Feed中可用的增强数据操作事件对象,尽管只需要少量属性来完成FullCalendar的正常操作。