php - 在 Json PHP 输出中转换数组不符合预期
问题描述
将 PHP 数组转换为 Json 时遇到一些问题。有关更多上下文,这是代码:
`<?php
$Users = array();
$file = fopen('usersFile.csv', 'r');
$row = fgets($file);
$ColumnKeys = explode(',', $row);
while (!feof($file)) {
$row = fgets($file);
$userData = explode(',', $row);
for ($i=0; $i<sizeof($columnkeys); $i++) {
$user[$columnKeys[$i]] = $userData[$i];
}
array_push($Users, $user);
}
fclose($file);
echo json_encode($Users);
?>`
包含用户数据的 csv 文件是这样的:
id,name,docNumber,dateBirth
1,马里奥马里奥,1694370,06/11/1953
2,保罗佩普,1725614,24/04/1964
输出如下所示:
[{"id":"1","name":"Mario Mario","docNumber":"1694370","dateBirth\r\n":"06\11\1953\r\n"}, {"id":"2","name":"Pau Pep","docNumber":"1725614","dateBirth\r\n":"24\04\1964\r\n"}]
我不知道为什么在输出中 $Users 数组在 dateBirth 中包含元字符及其值。快把我逼疯了。
解决方案
似乎有一个名为 JSON_UNESCAPED_SLASHES 的 json_encode 选项
<?php
$Users = array();
$file = fopen('usersFile.csv', 'r');
$row = fgets($file);
$columnKeys = explode(',', trim($row));
while (!feof($file)) {
$row = fgets($file);
$userData = explode(',', trim($row));
for ($i=0; $i<sizeof($columnKeys); $i++) {
$user[$columnKeys[$i]] = $userData[$i];
}
array_push($Users, $user);
}
fclose($file);
echo json_encode($Users, JSON_UNESCAPED_SLASHES);
?>
输出:
[{"id":"1","name":"Mario Mario","docNumber":"1694370","dateBirth":"06/11/1953"},{"id":"2","name":"Pau Pep","docNumber":"1725614","dateBirth":"24/04/1964"}]
推荐阅读
- hibernate - Override hibernate 物理命名策略 | @Column 不工作
- python-3.x - Flask 应用程序中的 FloatField 条目出现问题
- javascript - 按钮单击上的 javascript 功能有时有效
- c++ - 如何修复超过 1 分钟规则的 Collatz 序列码?
- reactjs - 反应选择没有选择选项
- python - 熊猫:选择最后“N”列
- react-native - 无法解析模块`@expo/vector-icons/FontAwesome`
- python - Python Argparse:可选参数中的参数
- flutter - Flutter 的 PopupMenuButton 中未显示图标
- javascript - 在 HTML 上显示多个 JSON 响应作为单个值