【问题标题】:extract and rebuild key value pairs for json提取和重建 json 的键值对
【发布时间】:2015-01-29 14:12:29
【问题描述】:

我目前有一个包含键值对的数组,例如:

Array(
  (int) 250 => 'blue',
  (int) 252 => 'green',
  (int) 289 => 'yellow'
)

这是我调试时得到的格式。

I need it to be formatted as follows:
['key':250,'value':'blue'],
['key':252,'value':'green'],
['key':289,'value':'yellow']

所以基本上我需要它是 "key" 等于 "a value" & "value" = "a value"

然后这个数组会被序列化为json。

关于如何做到这一点的任何想法?

【问题讨论】:

  • 正确的 json 类似于 {"250":"blue", "252": "green", "289": "yellow"}。为什么会有奇怪的中间数据格式?
  • 我真的不知道该怎么做。当我尝试按原样 _serialize 数组时,它失败了。你建议我做什么?
  • 我并不真正了解 PHP,但根据 php.net/manual/en/function.json-encode.php 的说法,只需使用您拥有的数组进行 json_encode() 就可以了。

标签: php json


【解决方案1】:

在您的控制器中:

if($this->RequestHandler->responseType() == 'json'){
    $data = array(
       (int) 250 => 'blue',
       (int) 252 => 'green',
       (int) 289 => 'yellow'
     );
    $this->set('data', $data);
    $this->set('_serialize', 'data');
}

在您的 routers.php 中

Router::parseExtensions('json');

例如致电:http://localhost/mycontroller/myaction.json

结果

{"250":"blue","252":"green","289":"yellow"}

$data= array(
   (int) 250 => 'blue',
   (int) 252 => 'green',
   (int) 289 => 'yellow'
 );
 foreach ($data as $key => $value) {
     $data[] = array('key'=> $key,'value'=> $value);
 } 
$this->set('data', $data);
$this->set('_serialize', 'data');

结果

[{"key":250,"value":"blue"},{"key":252,"value":"green"},{"key":289,"value":"yellow"}]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-12
    • 1970-01-01
    • 2019-02-05
    • 2016-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-31
    相关资源
    最近更新 更多