将带有方括号的json转换为php数组

时间:2013-07-28 14:20:09

标签: php datatables

我试图发现什么php数组让你这个json

{
  "sEcho": 67,
  "iTotalRecords": "4075",
  "iTotalDisplayRecords": "4075",
  "aaData": [
    [
      "215",
      "Manaus",
      "BRA",
      "Amazonas",
      "1255049"
    ],
    [
      "216",
      "Belém",
      "BRA",
      "Pará",
      "1186926"
    ],
    [
      "217",
      "Guarulhos",
      "BRA",
      "São Paulo",
      "1095874"
    ],
    [
      "218",
      "Goiânia",
      "BRA",
      "Goiás",
      "1056330"
    ],
    [
      "219",
      "Campinas",
      "BRA",
      "São Paulo",
      "950043"
    ],
    [
      "220",
      "São Gonçalo",
      "BRA",
      "Rio de Janeiro",
      "869254"
    ],
    [
      "221",
      "Nova Iguaçu",
      "BRA",
      "Rio de Janeiro",
      "862225"
    ],
    [
      "222",
      "São Luís",
      "BRA",
      "Maranhão",
      "837588"
    ],
    [
      "223",
      "Maceió",
      "BRA",
      "Alagoas",
      "786288"
    ],
    [
      "224",
      "Duque de Caxias",
      "BRA",
      "Rio de Janeiro",
      "746758"
    ]
  ]
}

我正在尝试这个

$array = array(
    "foo" => "more foo",
    "st" => "bar",
    "ty" => "stuff",
    "multi" => array(
             "array" => "foo",
             "the" => "stuff"
         ),
         array(array(
             "array" => "foo",
             "the" => "stuff"
         )),
         array(array(
             "array" => "foo",
             "the" => "stuff"
         )),
         array(array(
             "array" => "foo",
             "the" => "stuff"
         ))
    );
echo "<pre>";
print_r(json_encode($array));
echo "</pre>";

但我的json有一个大括号

  

{ “foo” 的:“更   foo”的, “ST”: “棒”, “TY”: “东西”, “多”:{ “阵列”: “foo” 的, “在”: “东西”}, “0”:[{ “阵列” : “foo” 的, “该”: “东西”}]中, “1”:[{ “阵列”: “foo” 的, “该”: “东西”}], “2”:[{ “阵列”:”富”, “该”: “东西”}]}

如何更正我的数组以生成json?。

4 个答案:

答案 0 :(得分:3)

你有太多的深度数组,你不应该指定密钥。在PHP数组中,如果你设置一个字符串键并且JSON对它进行编码,那么它将产生一个不是数组的对象。

$array = array(
    "foo" => "more foo",
    "st" => "bar",
    "ty" => "stuff",
    "multi" => array(
        array(
            '215',
            'Manaus',
            'BRA'
        ),
        array(
            '216',
            'Belém',
            'BRA'
        ),
        array(
            '217',
            'Guarulhos',
            'BRA'
        )
    )
);

echo json_encode($array);

输出:

{
    "foo": "more foo",
    "st": "bar",
    "ty": "stuff",
    "multi": [
        [
            "215",
            "Manaus",
            "BRA"
        ],
        [
            "216",
            "Belém",
            "BRA"
        ],
        [
            "217",
            "Guarulhos",
            "BRA"
        ]
    ]
}

答案 1 :(得分:2)

使用数字索引!任何以字符串作为键的东西都必须产生花括号,因为这是在javascript中使用这些键的唯一方法。

json_encode(array("hello", "world")

["hello", "world"]

答案 2 :(得分:1)

json数组索引必须是数字。 任何非数字索引都将转换为json对象。 这就是为什么它被渲染成大括号。

关于您的初始问题,以下PHP代码:     header(“Content-type:application / json”);     header(“Access-Control-Allow-Origin”,“*”);     header(“Access-Control-Allow-Methods:POST,OPTIONS”);     header(“Access-Control-Allow-Headers:Content-Type”);     header(“Access-Control-Allow-Credentials:false”);     标题(“Access-Control-Max-Age:60”);

include "./inc/funclib.inc.php";
$array = array (
    "sEcho" =>  67,
    "iTotalRecords" => "4075",
    "iTotalDisplayRecords" => "4075",
    "aaData" => array (
        array ( "215", "Manaus", "BRA", "Amazonas", "1255049"),
        array ( "216", "Belem",  "BRA", "Para¡", "1186926"),
        array ( "217", "Guarulhos", "BRA", "Sao Paulo", "1095874")
    ));

echo jsonIndent(json_encode($array));

返回该输出:

{
  "sEcho":67,
  "iTotalRecords":"4075",
  "iTotalDisplayRecords":"4075",
  "aaData":[
    [
      "215",
      "Manaus",
      "BRA",
      "Amazonas",
      "1255049"
    ],
    [
      "216",
      "Belem",
      "BRA",
      "Para\u00a1",
      "1186926"
    ],
    [
      "217",
      "Guarulhos",
      "BRA",
      "Sao Paulo",
      "1095874"
    ]
  ]
}

这看起来像你在寻找什么。 我希望这会有所帮助: - )

答案 3 :(得分:0)

你有大括号,因为你指定了键和值,你需要只指定值。

$array = array(
    "foo" => "more foo",
    "st" => "bar",
    "ty" => "stuff",
    "multi" => array(
              "foo",
             "stuff"
         ),
         array(array(
              "foo",
             "stuff"
         )),
         array(array(
             "foo",
             "stuff"
         )),
         array(array(
              "foo",
             "stuff"
         ))
    );