0

我正在尝试将 mustache 与名为 Bic_Calendar 的引导日历一起使用,基本上您可以使用这样的对象将事件添加到日历中

    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',
},
]
;

我想要的是使用 mustache 来快速总结下一个事件,问题是为了让 mustache 渲染模板,对象需要更改为:

    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',
},
]}
;

所以我试图将原始事件连接成一个新事件,但它不起作用,所以我想我在连接中做错了什么

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

此选项均无效!

4

2 回答 2

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 字符串,因此您不应该期望能够像字符串一样连接它。

于 2013-10-10T00:32:14.677 回答
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,它将转换objectjson string. 顺便说一句,concatarray对象的方法。

于 2013-10-10T00:32:18.353 回答