我使用php编程创建了总api,对于我使用的输出
json_encode($arr)
现在我想通过用"代替null来打印输出。
我已经使用JSON_ENCODE($ arr)完成了400多个网络服务,但我不想更改为
任何身体都可以帮助
我的实际数组
$array=array("id" => "2",
"name" => "Test Name",
"address" => "83 Test Street",
"city" => "Test",
"phone" => "(123) 456-7890",
"video_thumb" => null,
"thumbnail" => null,
"description" => null);
echo json_encode($ array);//输出:
{"id":"2",
"name":"Test Name",
"address":"83 Test Street","city":"Test","phone":"(123) 456-7890","video_thumb":null,
"thumbnail":null,
"description":null
}
期望输出//输出
{"id":"2","name":"Test Name",
"address":"83 Test Street",
"city":"Test","phone":"(123) 456-7890","video_thumb":"",
"thumbnail":"",
"description":""}
喜欢这个
$array = array("id" => "2",
"name" => "Test Name",
"address" => "83 Test Street",
"city" => "Test",
"phone" => "(123) 456-7890",
"video_thumb" => null,
"thumbnail" => null,
"description" => null
);
array_walk_recursive($array, function(&$item){
if(is_null($item)) $item = '';
});
echo json_encode($array);
输出
{"id":"2","name":"Test Name","address":"83 Test Street","city":"Test","phone":"(123) 456-7890","video_thumb":"","thumbnail":"","description":""}
沙盒
如果您必须称其为400次,请将其包装在功能中。像这样装饰普通的json_encode:
function my_json_encode($value,$options=0,$depth=512){
array_walk_recursive($value, function(&$item){
if(is_null($item)) $item = '';
});
return json_encode($value,$options,$depth);
}
这样,您可以访问普通方法的所有选项和功能,但是有一个小更改。没有核心功能的"覆盖",没有以覆盖类方法的方式。函数只能定义一次,然后设置它们。
此代码帮助我解决了问题,而无需修改所有服务
ob_start(function($json) {
function json_validator($data = NULL) {
if (!empty($data)) {
json_decode($data);
return (json_last_error() === JSON_ERROR_NONE);
}
return false;
}
if (json_validator($json)) {
$response_arry = json_decode(str_replace('null', '""', $json));
if (json_last_error_msg() == "Syntax error") {
$response_arry = json_decode(str_replace('"null"', '""', $arr));
}
return json_encode($response_arry, JSON_PRETTY_PRINT);
} else {
return ob_get_contents();
}
});
这个想法是使用OverRide_function"修改" JSON_ENCODE函数。在调用此功能之前,可以修改数组,以满足空字符串而不是空。您可以尝试一下:
rename_function('json_encode', 'override_json_encode' );
override_function("json_encode", '$array', 'return override_json_encode($array);' );
function override_json_encode($array){
foreach ($array as &$value) {
if ($value === null)
$value = "";
}
return json_encode($array);
}
}
哦,了解您的平均值。请查看关注文档:http://php.net/manual/en/ref.apd.phprename_function和override_function