对于我使用的输出,我已经使用php编程创建了全部api
PROCEDURE GEN_EXCEL IS
IN_FILE TEXT_IO.FILE_TYPE;
VC_HEAD Varchar2(32000);
vc_file_path Varchar2(50) := 'C:\';
BEGIN
IN_FILE := TEXT_IO.FOPEN(vc_file_path||'Test'||'.CSV','W');
TEXT_IO.PUT_LINE(IN_FILE,'YOUR_TITLE'||chr(10));
VC_HEAD := 'header1,header2,header3,header4';
TEXT_IO.PUT_LINE(IN_FILE,VC_HEAD);
FOR C1 IN ( SELECT column1, column2, column3, column4
FROM Table_name)
LOOP
TEXT_IO.PUT_LINE(IN_FILE,C1.col1||','||C1.col2||','||C1.col3||','||C1.col4);
END LOOP;
TEXT_IO.FCLOSE(IN_FILE);
MESSAGE('Excel file has been created!');
MESSAGE('Excel file has been created!');
EXCEPTION
WHEN Others THEN
TEXT_IO.FCLOSE(IN_FILE);
MESSAGE('Error while writing file.');
MESSAGE('Error while writing file.');
END;
现在我想通过将null替换为“”来打印输出。
我已经使用json_encode($ arr)完成了400多个Web服务的输出,但是我不想更改为
任何身体都可以帮助
我的实际数组
json_encode($arr)
echo json_encode($ array); //输出:
$array=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":null,
"thumbnail":null,
"description":null
}
答案 0 :(得分:0)
此代码帮助我解决了该问题,而无需修改所有服务
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();
}
});
答案 1 :(得分:0)
这个想法是使用override_function来“修改” json_encode函数。在调用此函数之前,可以修改数组,使其满足一个空字符串而不是null。 您可以尝试以下方法:
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);
}
}
答案 2 :(得分:-1)
赞
$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);
}
通过这种方式,您可以访问常规方法的所有选项和功能,但有一点点更改。核心功能没有“覆盖”,也没有覆盖类方法的方式。功能只能定义一次,然后才能设置。
答案 3 :(得分:-1)
哦,明白你的意思。请查看以下文件: http://php.net/manual/en/ref.apd.php 重命名功能和替代功能