将文本数组转换为Javascript对象

时间:2017-12-11 08:36:25

标签: javascript php arrays json

我正在尝试将数组从GET请求转换为Javascript中的实际对象。

这是我试图转换的数组的一个例子。

array(21) {
  [0]=>
  array(3) {
    ["id"]=>
    int(15508)
    ["name"]=>
    string(9) "Some name"
    ["API_key"]=>
    string(19) "Some key"
  }
  [1]=>
  array(3) {
    ["id"]=>
    int(19695)
    ["name"]=>
    string(12) "Some name"
    ["API_key"]=>
    string(19) "Some key"
  }
  [2]=>
  array(3) {
    ["id"]=>
    int(19627)
    ["name"]=>
    string(13) "Some name"
    ["API_key"]=>
    string(19) "Some key"
  }

该数组是从PHP中的Web服务服务器生成的。

我试过这样做:

var result = xmlHttp.responseText;
var string = JSON.stringify(result);
var json = JSON.parse(string);

这将返回相同的数组,但是当我尝试访问数组中的某些项时,例如在for循环中:json[i]返回一个字母,就好像数组是一个字符串一样。

我控制了服务器,这是php文件中处理数组返回的代码:

header("Content-Type: application/json");
var_dump($result);

使用gettype($result)返回'array'。

修改

我能够让PHP以JSON格式返回数组:

[
  [
    {
      "id": 15508,
      "name": "Some name",
      "API_key": "Some key"
    },
    {
      "id": 19695,
      "name": "Some name",
      "API_key": "Some key"
    },
    {
      "id": 19627,
      "name": "Some name",
      "API_key": "Some key"
    {
  ]
]    

我对此有点新意,我真的很感激任何帮助。

2 个答案:

答案 0 :(得分:0)

尝试PHP

$json = json_encode($_GET);
print_r($json);

在JS中

var result = xmlHttp.responseText;
var json = JSON.parse(result);

答案 1 :(得分:0)

更新!我这样解决了

通过使用this回答中的代码,我能够在PHP中创建JSON,结果证明,我的数组没有正确编码。

$arr[] = $result;
function utf8ize($d) {
    if (is_array($d)) {
        foreach ($d as $k => $v) {
            $d[$k] = utf8ize($v);
        }
    } else if (is_string ($d)) {
        return utf8_encode($d);
    }
    return $d;

然后使用echo json_encode(utf8ize($data));将数组返回给JSON。要在JavaScript中将其转换为JSON,我在这里使用了另一个answer来寻求帮助:

var result = xmlHttp.responseText;
var json = JSON.parse(result);

谢谢!