10

JSON サービスがあり、データを CSV ファイルにエクスポートするスクリプトを作成する必要があります。JSON を CSV 形式に移行する方法やライブラリを提案できる人はいますか?

フォーマットの例を次に示しますが、ソリューションを使用するにはソリューションを後付けする必要があると思います。

{"service_name":
      { key : value, key : value....}
}

また:

{"service_name":
        [
               { key : value, key : value....},
               ...
         ]
}
4

4 に答える 4

13

私は一般的にコメンターに同意しますが、データがこのように準備されている場合、この疑似コードだけで十分ではないでしょうか?

$json_str = "{'aintlist':[4,3,2,1], 'astringlist':['str1','str2']}";

$json_obj = json_decode ($json_str);

$fp = fopen('file.csv', 'w');

foreach ($json_obj as $fields) {
    fputcsv($fp, $fields);
}

fclose($fp);
于 2012-03-05T20:43:57.843 に答える
2

JSON が配列や埋め込みオブジェクトのないデータセットの配列であると仮定すると、次のようなものが機能するはずです。

$file = file_get_contents('http://example.com/blah/blah');
$json = json_decode($file);

$csvfile = fopen('file.csv', 'w+');
foreach ($json as $row) {
    $line = "'" . join("\",\"", $row) . "\"\n";
    fputs($csvfile, $line);
}
fclose($csvfile);

適切なエラー処理を追加する必要があります。この種のことをしようとすると、うまくいかないことがたくさんあります (つまり、JSON ファイルが利用できないか、形式が正しくない、新しい CSV ファイルを作成できない)。

于 2012-03-05T20:44:07.570 に答える
2

私はちょうど同じことをする必要がありました。私は小さなコマンド ライン スクリプトを作成しました。このスクリプトは、パラメーターとして json ファイルを受け取り、CSV を出力します。

ここで確認できます: PHP Converting JSON array to CSV

重要なスタッフは、配列のキーを CSV ファイルの最初の行として使用しています。そして、次の要素の順序を維持して、CSV を台無しにしないようにします。

コードは次のとおりです。

if (empty($argv[1])) die("The json file name or URL is missed\n");
$jsonFilename = $argv[1];

$json = file_get_contents($jsonFilename);
$array = json_decode($json, true);
$f = fopen('php://output', 'w');

$firstLineKeys = false;
foreach ($array as $line)
{
    if (empty($firstLineKeys))
    {
        $firstLineKeys = array_keys($line);
        fputcsv($f, $firstLineKeys);
        $firstLineKeys = array_flip($firstLineKeys);
    }
    // Using array_merge is important to maintain the order of keys acording to the first element
    fputcsv($f, array_merge($firstLineKeys, $line));
}
于 2013-05-24T03:36:24.567 に答える