转换为json数组并通过api传递

时间:2015-11-19 16:14:21

标签: javascript php json

我有以下结构:

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中阅读它?

2 个答案:

答案 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
};