json_encode函数在 php 中数组为空时不返回大括号 {}

2022-08-30 10:27:19

我有此代码

$status = array(
                "message"=>"error",
                "club_id"=>$_club_id,
                "status"=>"1",
                "membership_info"=>array(),
                );

echo json_encode($status);

此函数返回 json:
{"message":"error","club_id":275,"status":"1","membership_info":[]}

但是我需要这样的json:

{"message":"error","club_id":275,"status":"1","membership_info":{}}


答案 1

使用以下选项:JSON_FORCE_OBJECTjson_encode

json_encode($status, JSON_FORCE_OBJECT);

文档

JSON_FORCE_OBJECT(整数)使用非关联数组时,输出对象而不是数组。当输出的接收者正在等待一个对象并且数组为空时,特别有用。从 PHP 5.3.0 开始可用。

或者,如果要在对象中保留“其他”数组,请不要使用前面的答案,只需使用以下命令:

$status = array(
                "message"=>"error",
                "club_id"=>$_club_id,
                "status"=>"1",
                "membership_info"=> new stdClass()
                );

答案 2
$status = array(
                "message"=>"error",
                "club_id"=>$_club_id,
                "status"=>"1",
                "membership_info"=>(object) array(),
                );

通过将数组转换为对象,将始终使用大括号而不是括号作为值(即使为空)。json_encode

当无法使用以及您无法(或不想)使用实际对象作为值时,这很有用。JSON_FORCE_OBJECT