我使用 PHP import_json 打开一个 JSON 文件,然后 export_json 仅将第一项输出为另一个 JSON 文件(本质上是将一个长 JSON 作业列表拆分为单个作业),但我遇到了一个问题,其中某处的行号是真实的或带有尾随“.0”的浮点数正在被转换并作为整数输出。
例子:
"Quality": -3.0,
"Quality": 20.0,
"AudioTrackGainSlider": 0.0,
"AudioTrackDRCSlider": 0.90000000000000002,
出来为:
"Quality":-3,
"Quality":20,
"AudioTrackDRCSlider":0.9,
"AudioTrackGainSlider":0,
我目前正在使用的整个 PHP 代码:
#open JSON file
$inputjson = json_decode(file_get_contents("store/queues/queue.json"), true);
#if empty echo "null"
if (is_null($inputjson[0])) {
echo "NULL";
} else {
#output first array index and print
header('Content-type: application/json');
$encodejson = array(0 => $inputjson[0]);
printf(json_encode($encodejson));
#Modify job list to remove first object and update index numbers
$outputjson = array();
$itemcount = count($inputjson);
$iterator = 1;
while ($iterator < $itemcount) {
$adjustment = $iterator - 1;
$pusharray = $inputjson[$iterator];
array_push($outputjson,$pusharray);
$iterator++;
}
#remove and re-create queue file with new generated queue
shell_exec('rm store/queues/queue.json');
shell_exec('touch store/queues/queue.json');
$jsoncreate = fopen("store/queues/queue.json", "w") or die("Unable to Write");
fwrite($jsoncreate, json_encode($outputjson));
fclose($jsoncreate);
}
示例 JSON 位于: https ://pastebin.com/K2qnggjT
不幸的是,我正在为其制作单个作业 JSON 的程序需要正确格式化数字,否则我会收到“预期的真实但得到 int”错误。JSON 文件包含字符串和数值,其中也有嵌套数组。
有什么方法可以让 PHP 像字符串一样传递数字,但在结果中仍显示为数值?在源代码中有显示为整数的数字,所以我认为仅将所有数字定义为带有尾随 .0 的浮点数是行不通的。这完全可以用 PHP 实现吗?