将字符串连接到json对象

时间:2013-10-10 00:26:38

标签: javascript json 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',
},
]
;

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

    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 + '}';

非此选项有效!

2 个答案:

答案 0 :(得分: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字符串,因此您不应期望能够将其连接为字符串。

答案 1 :(得分: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。顺便说一句,concatarray个对象的方法。