我有一个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) + "}";
谢谢,
标记
答案 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
});