首页 > 解决方案 > 如何使用 PHP json_encode 用 [] 格式化数组数据

问题描述

目标: 使用json_encode将数组数据格式化成指定格式

这是通过 PHP json_encode 运行后数据所需的格式:

需要的格式

{
    "top_level_data": [
     {
        "extension": {},
        "sub_level_data1": 0
     }
    ]
}

当我使用这个 PHP 时:

$data = array('top_level_data' => array('extension' => array(),
                                'sub_level_data1' => 0
                                )
            )
$data = json_encode($data);

我得到这个不正确的输出:

{
    "top_level_data":{
        "extension":[],
        "sub_level_data1": 0
        }
}

问题: 如何修改我的 php 以将 {} 和 [] 作为所需格式包含在正确的位置?

标签: phpjson

解决方案


目前尚不清楚您是如何生成的$data;如果是通过您显示的分配,那么您可以添加一个额外的arrayat层top_level_data,并将extension值转换为对象:

$data = array('top_level_data' => array(
                                    array('extension' => (object)array(),
                                          'sub_level_data1' => 0
                                          )
                                        )
            );

但是,如果您$data从其他来源获得,您可以像这样修改它:

$data['top_level_data']['extension'] = (object)$data['top_level_data']['extension'];
$data['top_level_data'] = array($data['top_level_data']);

两种方法都会产生这个 JSON:

{
    "top_level_data": [
        {
            "extension": {},
            "sub_level_data1": 0
        }
    ]
}

3v4l.org 上的演示


推荐阅读