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


Convert to json array and pass via api

我有以下结构:

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