PHP多维数组转JSON对象如何去除外层数字索引
解决方案
你得到带外层数字索引的结果,核心原因是使用了JSON_FORCE_OBJECT参数,该参数会强制将PHP的索引数组转换为JSON对象,自动生成数字键作为属性名。
你提到的目标格式{{"participant_name":"John"},{"participant_name":"Jane"}}本身不符合标准JSON规范,标准多对象集合的JSON格式外层使用[]包裹,如果你是笔误想要标准JSON数组,直接去掉JSON_FORCE_OBJECT参数即可:
$participantsJson = json_encode(array_values($participants));
输出结果为:
[{"participant_name":"John"},{"participant_name":"Jane"}]
如果你确实需要外层使用{}包裹的非标准格式,可以手动拼接字符串实现:
$participantsJson = '{' . implode(',', array_map(function($item) { return json_encode($item); }, $participants)) . '}';
注意:手动拼接得到的非标准格式无法被常规JSON解析器识别,非特殊场景不推荐使用。
内容的提问来源于stack exchange,提问作者Jozef Jezik
相关产品推荐
相关产品推荐

