我有这个代码
$status = array(
"message"=>"error",
"club_id"=>$_club_id,
"status"=>"1",
"membership_info"=>array(),
);
Run Code Online (Sandbox Code Playgroud)
echo json_encode($status);
这个函数返回json:
{"message":"error","club_id":275,"status":"1","membership_info":[]}
但我需要像这样的json:
{"message":"error","club_id":275,"status":"1","membership_info":{}}
Tah*_*ksu 57
使用以下JSON_FORCE_OBJECT选项json_encode:
json_encode($status, JSON_FORCE_OBJECT);
Run Code Online (Sandbox Code Playgroud)
JSON_FORCE_OBJECT(integer) 当使用非关联数组时,输出对象而不是数组.当输出的接收者期望一个对象并且该数组为空时特别有用.从PHP 5.3.0开始提供.
要么,
$status = array(
"message"=>"error",
"club_id"=>$_club_id,
"status"=>"1",
"membership_info"=> new stdClass()
);
Run Code Online (Sandbox Code Playgroud)
也会做的伎俩.
hum*_*ice 20
$status = array(
"message"=>"error",
"club_id"=>$_club_id,
"status"=>"1",
"membership_info"=>(object) array(),
);
Run Code Online (Sandbox Code Playgroud)
通过将数组转换为对象,json_encode将始终使用大括号而不是括号作为值(即使为空).
当不能使用时JSON_FORCE_OBJECT以及当您不能(或不希望)使用实际对象作为值时,这非常有用.
PHP在数组和"对象"之间没有区别(在JSON的意义上).如果要强制将所有数组编码为JSON对象,请设置JSON_FORCE_OBJECT自PHP 5.3以来可用的标志.请参见http://php.net/json_encode.请注意,这将适用于所有阵列.
或者,您实际上可以在PHP代码中使用对象而不是数组:
$data = new stdClass;
$data->foo = 'bar';
...
Run Code Online (Sandbox Code Playgroud)
也许处理空数组客户端的边缘情况更简单.