如何在json编码字符串内的子数组数据周围添加方括号?

2022-08-30 13:35:06

当尝试访问API时,JSON数组必须像这样解析

{"item":[{"id":"123456", "name":"adam"}]}

但是当我做下面的代码

$data = array("item" => array("id" => "123456", "name" => "adam"));
echo json_encode($data);

它返回不带方括号的 json 数组,如下所示

{"item":{"id":"123456","name":"adam"}}

我花了几个小时试图弄清楚如何解决这个问题,只是想不出解决方案


答案 1

你需要用另一个包装东西:array

$data = array("item" => array(array("id" => "123456", "name" => "adam")));

如果我们使用等效的 PHP 5.4 数组语法,这将更易于理解:

$data = [ "item" => [ ["id" => "123456", "name" => "adam"] ] ];

将此与 JSON 进行比较:

        { "item":   [ {"id":"123456", "name":"adam"      } ] }

唯一需要解释的是,为什么其中一个PHP数组仍然是JSON中的数组,而另外两个数组则转换为对象 。但是文档已经这样做了:[]{}

对数组进行编码时,如果键不是从 0 开始的连续数字序列,则所有键都编码为字符串,并为每个键值对显式指定。


答案 2

在阅读这篇文章之前,我有这个:

echo json_encode($data);

阅读这篇文章后:

echo json_encode(array($data));

括号出现在 JSON 对象的开头和结尾。


推荐