我有以下结构:
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']);
输出为null。
这是因为我得到了JSON 4错误,这意味着语法错误。
问题是someArray看起来像这样:
"[{"aaa":"aaa1","bbb":"bbb1"},{"ccc":"ccc1"}]"
这不是一个有效的JSON。但是,我怎样才能创建一个有效的JSON,以便以后可以用PHP读取它呢?
您对某些数据调用了两次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);
当您调用:时
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
};