添加到JSON字符串

时间:2013-03-22 15:57:10

标签: javascript json knockout.js

我有一个JSON字符串,如下所示:

[
    {"TypeName":"Double","TypeID":14},
    {"TypeName":"Single","TypeID":43},
    {"TypeName":"Family","TypeID":7}
]

在KnockOut中调用此函数后生成:

self.save = function() {
    var dataToSave = $.map(self.lines(), function(line) {
        return line.product() ? {
            TypeName: line.category().TypeName,
            TypeID: line.category().TypeID
            : undefined
});

alert(JSON.stringify(dataToSave));

但是,我希望在将模型发回给我的服务器之前,再向模型中添加3条信息 - 还要发送姓名,电子邮件和电话:

{
    "Name":"Mark",
    "Email":"me@me.com",
    "Tel":"0123456789",
    "Rooms":
        [
            {"TypeName":"Double","TypeID":14},
            {"TypeName":"Single","TypeID":43},
            {"TypeName":"Family","TypeID":7}
        ]
}

是否有正确的方法可以将此信息添加到JSON中,或者它是否像以下一样简单:

var toSend = "{\"Name\":\"Mark\":\"Email\":\"me@me.com\", \"Tel\":\"0123456789\",\"Rooms\":"
+ JSON.stringify(dataToSave) + "}"; 

谢谢,

标记

2 个答案:

答案 0 :(得分:5)

使用JSON.parse将您的JSON字符串解析为有效的JS对象,根据需要将数据添加到对象,然后再JSON.stringify。 JSON字符串只是数据的表示,因此您不应该直接修改它。

答案 1 :(得分:3)

为什么要编码为JSON,然后在将实际想要的结构传递给JSON编码器时修改结果字符串?

var toSend = JSON.stringify({
    Name: "Mark",
    Email: "me@me.com",
    Tel: "0123456789",
    Rooms: dataToSave
});