2013-10-10 3 views
0

Я пытаюсь использовать усы загрузочном календарь под названием Bic_Calendar в основном вы можете добавлять события в календарь с объектом, как этотконкатенации строки в объект JSON

var events = [ 
{ 
date: "28/10/2013", 
title: 'DUE DAY ENROLMENT', 
}, 
{ 
date: "29/10/2013", 
title: 'DUE DAY PAYMENT', 
}, 
{ 
date: "31/10/2013", 
title: '1st DAY OF CLASS', 
}, 
] 
; 

что я хочу с помощью усов, чтобы иметь краткий обзор следующих событий, проблема заключается в том, что для того, чтобы уса визуализации шаблона объект должен быть изменена на:

var events = {"events": [ 
{ 
date: "28/10/2013", 
title: 'DUE DAY ENROLMENT', 
}, 
{ 
date: "29/10/2013", 
title: 'DUE DAY PAYMENT', 
}, 
{ 
date: "31/10/2013", 
title: '1st DAY OF CLASS', 
}, 
]} 
; 

так что я пытаюсь объединить первоначальное событие в новый, но это не w orking, поэтому я думаю, что я делаю что-то неправильно в конкатенации

var events1 = '{"events": '. concat(events) .concat('}'); 
var events1 = '{"events": ' + events + '}'; 

не из этих вариантов работает!

ответ

1

var events не является JSON. Это буквальный массив javascript, вы не должны конкатенировать его, но просто вставляете его в новый объект и затем сериализуете в JSON, если вам нужна строка JSON.

var events = [ 
    { 
    date: "28/10/2013", 
    title: 'DUE DAY ENROLMENT', 
    }, 
    { 
    date: "29/10/2013", 
    title: 'DUE DAY PAYMENT', 
    }, 
    { 
    date: "31/10/2013", 
    title: '1st DAY OF CLASS', 
    }, 
]; 

var nestedEvents = { 'events': events }; 
var jsonEvents = JSON.stringify(nestedEvents); 

Как общее правило, если вы оказываетесь соблазн вручную создать строку JSON, вы, вероятно, не принимая правильный подход. Сначала создайте структуру данных, которую вы хотите сериализовать в JSON, а затем сериализуйте ее.

Другой вывод, который, как представляется, является общей точкой путаницы для разработчиков, заключается в том, что JSON является не чем иным, как сериализованным строковым представлением некоторой структуры данных. Нет такой вещи, как объект JSON. Формат JSON, безусловно, имеет сильное сходство с литералом объекта javascript, но он действительно отличается и должен рассматриваться как таковой. В этом случае ваша переменная events не содержит строку JSON, поэтому вы не должны ожидать ее конкатенации, как если бы это была строка.

0

У вас есть массив объектов, как

var events = [ 
    { 
     date: "28/10/2013", 
     title: 'DUE DAY ENROLMENT', 
    }, 
    { 
     date: "29/10/2013", 
     title: 'DUE DAY PAYMENT', 
    }, 
    { 
     date: "31/10/2013", 
     title: '1st DAY OF CLASS', 
    } 
]; 

Просто создайте новый объект с массивом событий, как этот

var eventsObj = { 'events': events }; 

Если вам нужно, чтобы сделать его строку JSON, то вы можете использовать JSON.stringify , который преобразует object в json string. BTW, concat is array метод объектов.

Смежные вопросы