通过JSON

时间:2018-06-18 05:32:01

标签: php json redbean

我们假设您有一个数字索引的数组,看起来像这样(通过RedBeanPHP's find操作获得):

[
[33=>["name"=>"John", "age"=25]], 
[55=>["name"="Jane", "age"=23]]
]

其中33和55是每个2" bean的id's" (基本上是关联数组)。

并且您希望将数组转换为JSON,以便将其发送到JavaScript客户端并将其作为JavaScript对象使用。

但你不能简单地JSON_encode因为你最终会在JavaScript对象中使用数字键,而JavaScript并不喜欢这样。

您可以使用什么策略通过JSON将此数组转换为JavaScript对象,以便在JavaScript端提供所有数据(包括每个bean的id)? (对于那里的RedBeanPHP人:我希望有一种原生的RedBeanPHP方法可以做到这一点,但我还没有找到。)

3 个答案:

答案 0 :(得分:2)

一个选项是使用array_map循环遍历数组。使用array_values从数组中获取所有值并以数字方式对数组进行索引。

$arr = [
    [33=>["name"=>"John", "age"=>25]], 
    [55=>["name"=>"Jane", "age"=>23]]
];

$result = array_map(function($o){
    return array_values($o)[0];
}, $arr);

echo json_encode( $result );

这将导致:

[{"name":"John","age":25},{"name":"Jane","age":23}] 

答案 1 :(得分:1)

对于你的关联数组:

    $array = array(33 => array("name" => "John", "age" => 25), 55 => array("name" => "Jane", "age" => 23));

PHP json_encode函数:

$good_json  = json_encode($array,  JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_NUMERIC_CHECK);

为JavaScript对象生成JSON(字符串“name”:值对):

{"33":{"name":"John","age":25},"55":{"name":"Jane","age":23}}

答案 2 :(得分:1)

简单。你应该试试这个。首先遍历外部数组,然后在内部获取数据的id。将id添加到其他值并将该数组推送到结果值。

$result = array();
$arr = [[33=>["name"=>"John", "age"=>25]],[55=>["name"=>"Jane", "age"=>23]]];
foreach ($arr as $ar) {
    foreach ($ar as $key => $value) {
        $value['id'] = $key;
        array_push($result, $value);
    }
}
echo json_encode($result);

输出: -

[{"name":"John","age":25,"id":33},{"name":"Jane","age":23,"id":55}]