将数组转换为特定的JSON格式

时间:2015-04-10 16:24:26

标签: php arrays json

我正在努力不得不提出这个问题,但我无法弄清楚如何将以下数组转换为下面的JSON格式。简单地json_encoding数组不会产生所需的方括号。

PHP数组

$json = array(
              "api_key" => $api_key,
              "data"    => array(
                                "item" => array (
                                                "value" => rand(0, 5684),
                                                "text" => "Total"
                                                )
                                )
             );

需要JSON格式

{
    "api_key": "api key",
    "data": {
        "item": [
            {
                "value": 3212,
                "text": "Total"
            }
        ]
    }
}

我应该如何更改数组以使json_encode生成正确的格式,或者在编码时是否缺少某些开关?

2 个答案:

答案 0 :(得分:1)

你只是错过了关卡。在PHP中,item是一个具有valuetext属性的关联数组。但在预期的JSON中,它是一个包含一个具有valuetext属性的对象的数组。因此,在PHP结构中,您需要一个简单的数组,将关联数组放在中。

E.g:

$json = array(
  "api_key" => $api_key,
  "data" => array(
    "item" => array( // <== The simple array
      array(         // <== Your original associative array
        "value" => rand(0, 5684) ,
        "text" => "Total"
      )
    )
  )
);

如果你json_encode,那么,你得到:

{
    "api_key": "your key",
    "data": {
        "item": [
            {
                "value": 605,
                "text": "Total"
            }
        ]
    }
}

答案 1 :(得分:1)

如果您希望item成为词典列表,则需要在输入中使用一组关联数组:

$json = array(
   "api_key" => 'foo',
   "data"    => array(
      "item" => array(
         array (
            "value" => rand(0, 5684),
            "text" => "Total"
         )
      )
   )
);