如何使用CSV文件将JSON数据快速转换为CSV格式

时间:2019-05-24 01:38:17

标签: php json csv

我正在使用PHP,并将JSON数据转换为CSV格式,以后再读取相同的CSV文件以进行进一步处理。

下面是我的代码,它将JSON数据转换为CSV格式。

function LoadDataFromFile($file)
{

$json = file_get_contents($file);
$array = json_decode($json, true);
$f = fopen('out.csv', 'w');
$firstLineKeys = false;
$keys = array();
//first collect keys
foreach($array as $line){
    foreach($line as $key => $value){
        if(!in_array($key, $keys))
            $keys[] = $key;
    }
}
$keyString = implode(",", $keys);
fwrite($f, "$keyString\n");
foreach ($array as $line)
{
    $outputArray = array();
    foreach($keys as $key){
        if(array_key_exists($key, $line)){
            $outputArray[] = str_replace(',', '', $line[$key]);;
        } else {
            $outputArray[] = "";
        }
    }
    $outputString = implode(",", $outputArray);
    fwrite($f, "$outputString\n");
}
fclose($f);

}

我们可以看到,我正在将数据写入“ out.csv”文件中,随后我正在读取相同的CSV文件,并将同一文件的值/全部内容逐行分配给$ array变量,如下所示。

$array = explode("\n", file_get_contents('out.csv'));

现在,我想不使用中间“ out.csv”文件而直接将csv内容的值分配给$ array变量。

想知道在将JSON数据转换为CSV格式时应该使用什么数据结构,以及“ LoadDataFromFile”方法可能需要更改代码吗?

1 个答案:

答案 0 :(得分:1)

如果您已经可以将json转换为csv,则只需将分配给字符串变量的输出字符串附加到一起,而不是将其写入文件。还是我误会了你想要什么?

代替:

fwrite($f, "$outputString\n");

您可以放置​​:

$csv .= $outputString;

并完成以下操作:

$array = explode("\n", $csv);