我有以下结构:
var arr = [
{
aaa: "aaa1",
bbb: "bbb2"
},
{
ccc: "ccc1"
}
];
var fooBar = {
something1: "aaa",
something2: "bbb",
someArray: JSON.stringify(arr)
};
我想将所有这些转换为一个变量作为json并将其传递给PHP服务器,如下所示:
var data = "request=" + JSON.stringify(fooBar);
但是当我现在尝试在PHP中评估它时:
$output = json_decode($_POST['request']);
输出为空。
这是因为我收到JSON 4错误,这意味着语法错误。
问题是someArray看起来像这样:
"[{"aaa":"aaa1","bbb":"bbb1"},{"ccc":"ccc1"}]"
哪个不是有效的JSON。但是,我怎么能创建一个有效的JSON,以便我以后可以在PHP中阅读它?
答案 0 :(得分:0)
您正在对某些数据调用JSON.stringify两次 - 结果如下:
""[{\"aaa\":\"aaa1\",\"bbb\":\"bbb2\"},{\"ccc\":\"ccc1\"}]""
相反,只需在结束时调用一次。
var arr = [
{
aaa: "aaa1",
bbb: "bbb2"
},
{
ccc: "ccc1"
}
];
var fooBar = {
something1: "aaa",
something2: "bbb",
someArray: arr
};
var data = "request=" + JSON.stringify(fooBar);
答案 1 :(得分:0)
致电时:
someArray: JSON.stringify(arr)
您正在将该值转换为字符串而不是数组。你可能想要做的是
var arr = [
{
aaa: "aaa1",
bbb: "bbb2"
},
{
ccc: "ccc1"
}
];
var fooBar = {
something1: "aaa",
something2: "bbb",
someArray: arr // Assign the array to here
};