如何在PHP中将空数组转为JSON对象({})而非数组([])
解决方案
要让空的parent字段序列化为JSON对象{},你需要将PHP中的空索引数组替换为空关联数组或空对象,以下是几种可行方法:
方法1:使用空关联数组
PHP中,无数字索引的空关联数组会被json_encode序列化为JSON对象,你可以用(array) null来创建空关联数组:
<?php $newArray = array( "name" => "SMK Bina Rahayu", "grade" => "below", "parent" => (array) null ); $afterEncode = json_encode($newArray); print_r($afterEncode); ?>
方法2:使用空对象(stdClass)
直接实例化stdClass空对象作为parent的值,json_encode会将对象转为JSON对象:
<?php $newArray = array( "name" => "SMK Bina Rahayu", "grade" => "below", "parent" => new stdClass() ); $afterEncode = json_encode($newArray); print_r($afterEncode); ?>
方法3:使用JSON_FORCE_OBJECT参数(全局强制转换)
如果不需要区分数组和对象的序列化结果,可以在json_encode时添加JSON_FORCE_OBJECT参数,强制所有数组转为JSON对象:
<?php $newArray = array( "name" => "SMK Bina Rahayu", "grade" => "below", "parent" => array() ); $afterEncode = json_encode($newArray, JSON_FORCE_OBJECT); print_r($afterEncode); ?>
注意:此方法会将所有数组(包括正常索引数组)转为对象,仅适合不需要保留数组结构的场景。
以上三种方法执行后,都会输出你需要的结果:
{ "name": "SMK Bina Rahayu", "grade": "below", "parent": {} }
内容的提问来源于stack exchange,提问作者Meikel Rizky Hartawan
相关产品推荐
相关产品推荐

