以特定输出格式从PHP创建JSON

以特定输出格式从PHP创建JSON,php,json,Php,Json,我需要使用PHP从数据库创建一个JSON文件,但是使用JSON文件的人希望它采用某种格式。当我使用json_encode进行编码时,输出如下: [{"pid":"76","language":"en","name":"Some name"},{"pid":"77","language":"en",&

我需要使用PHP从数据库创建一个JSON文件,但是使用JSON文件的人希望它采用某种格式。当我使用json_encode进行编码时,输出如下:

[{"pid":"76","language":"en","name":"Some name"},{"pid":"77","language":"en","name":"Some other name"}]
但是,他们希望这样:

{"pid":"76","language":"en","name":"Some name"}
{"pid":"77","language":"en","name":"Some other name"} 
<?php
define("OUTFILE",'output.txt');

$arr = [["data1"=>"Some Data", "data2"=>"Some more data"],["data3"=>"Some Data", "data4"=>"Some more data"]];

if (file_exists(OUTFILE)) {
    unlink(OUTFILE);
}

foreach($arr as $obj) {
    file_put_contents(OUTFILE,  json_encode($obj)."\n", FILE_APPEND);
}

/* Output in file:
{"data1":"Some Data","data2":"Some more data"}
{"data3":"Some Data","data4":"Some more data"}
*/
因此,他们不希望在开头和结尾使用“[”和“]”,他们不希望在{},{}之间使用“,”,他们希望每个{}都在新行中


这是我可以用PHP做的吗?有什么方法可以做到这一点吗?

要求您提供的不是有效的JSON。但是,每一行都是有效的JSON,因此如果逐行读取文件,则每一行都可以解码

您所需要做的就是循环遍历您开始使用的数组,并在新行上输出每个元素(json_编码)

大概是这样的:

{"pid":"76","language":"en","name":"Some name"}
{"pid":"77","language":"en","name":"Some other name"} 
<?php
define("OUTFILE",'output.txt');

$arr = [["data1"=>"Some Data", "data2"=>"Some more data"],["data3"=>"Some Data", "data4"=>"Some more data"]];

if (file_exists(OUTFILE)) {
    unlink(OUTFILE);
}

foreach($arr as $obj) {
    file_put_contents(OUTFILE,  json_encode($obj)."\n", FILE_APPEND);
}

/* Output in file:
{"data1":"Some Data","data2":"Some more data"}
{"data3":"Some Data","data4":"Some more data"}
*/

由于JSON是一个数组,因此可以循环使用它。对于每个对象,打印对象并在末尾打印
PHP\u EOL
,谢谢。成功了。