我想创建一个json文件,其数组逐行编码为json。所以它看起来像这样:
{...valid json 1...}
{...valid json 2...}
但是当我使用带有“/ n”标志的简单fwirte来执行此操作时,我在json文件的第一行中得到意外的EOF。就像我无法在一个文件中逐个创建jsons,它具有.json扩展名。
什么是错的,我该如何解决?
EDIT。我使用的示例代码:
$file = fopen("output.json", "w");
$arr = ['a', 'b'];
fwrite($file, json_encode($arr), "\n");
fclose($file);
答案 0 :(得分:2)
根据手册,fwrite确实接受以下三个参数:
resource $handle
string $string
int $length (optional)
所以你必须做以下事情:
$file = fopen("output.json", "w");
$arr = ['a', 'b'];
fwrite($file, json_encode($arr) . "\n");
fclose($file);
请注意,字符串连接运算符是.
(只是一个点)
答案 1 :(得分:1)
添加到@Atmoscreations回答:
您的输出格式在技术上是无效的JSON。如果要存储值/对象列表,则应将所有内容封装在JSON列表中:
[
{...valid json 1...},
{...valid json 2...},
...
{...valid json N...}
]
您可以使用PHP对象执行此操作:
$file = fopen("output.json", "w");
$arr = [
['a', 'b'],
['c', 'd'],
];
fwrite($file, json_encode($arr));
fclose($file);