1

我有一个 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) + "}"; 

谢谢,

标记

4

2 回答 2

5

将您的 JSON 字符串解析JSON.parse为有效的 JS 对象,根据需要将数据添加到对象中,然后JSON.stringify返回。JSON 字符串只是您的数据的一种表示形式,因此您不应依赖于直接对其进行修改。

于 2013-03-22T15:58:55.393 回答
3

当您可以将您真正想要的结构传递给 JSON 编码器时,为什么要编码为 JSON,然后修改结果字符串?

var toSend = JSON.stringify({
    Name: "Mark",
    Email: "me@me.com",
    Tel: "0123456789",
    Rooms: dataToSave
});
于 2013-03-22T16:00:13.197 回答