我正在努力从js中正确格式化一些动态数据(我稍后会将它发送到php)。
我需要以下格式:
{ "r" : "pax" , "c" : 1 , "w" : [ "kiwi" , "melon"] , "g" : [ "cat" , "dog"]}
目前正在使用:
var send = [];
send.push ('r:pax');
send.push ('c:1');
var w = ["kiwi", "melon"];
send.push('"w":'+w);
var g = ["cat", "dog"];
send.push('"g":'+g);
s=JSON.stringify(send);
document.getElementById("demo").innerHTML = s;
返回:
["r:pax","c:1","\"w\":kiwi,melon","\"g\":cat,dog"]
我已经看到stringify是解决方案,但我无法正确传递密钥对。
我该怎么做?
问候。
答案 0 :(得分:2)
mmm你为什么要开始使用阵列? ...如果我理解得很好,可以使用以下方法轻松解决:
var s = JSON.stringify({
r: "pax",
c: 1,
w: ["kiwi", "melon"],
g: ["cat", "dog"]
});
答案 1 :(得分:0)
发送不应该是一个数组,根据您希望最终输出的格式,而是一个对象。如下所示:
var send = {
r: "pax",
c: 1,
w: ["kiwi", "melon"],
g: ["cat", "dog"]
};
var s = JSON.stringify(send);
答案 2 :(得分:0)
通过做小部件来构建JSON不正确。只需构建一个 NORMAL Javascript数组/对象对,然后将整个事物编码为json。
因为你传入key:value
字符串,json的stringify不知道/不关心它已经是json。它只是看到一个字符串并对其应用字符串编码规则。因此,你所看到的所有额外逃脱。
尝试
send = [];
send.push({w:['kiwi', 'melon']})
send.push({g:['cat','dog']});
s = JSON.stringify(send);
代替。