jsonファイルをPHPスクリプトを使用してCSV形式に変換しようとしています。コードは次のとおりです。PHPを使用してJSONを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('output.csv', 'w');
$firstLineKeys = false;
foreach ($array as $line)
{
if (empty($firstLineKeys))
{
$firstLineKeys = array_keys($line);
fputcsv($f, $firstLineKeys);
$firstLineKeys = array_flip($firstLineKeys);
}
fputcsv($f, array_merge($firstLineKeys, $line));
}
作品のこの種のが、唯一のJSONファイルの外側の変数を返して、そして「配列の文字列への変換」警告
取得していますJSONデータは次のようになります。
{"type":"NON_ATTRIBUTED","conversion":{,"value_1":"000000100355321","value_3":"XXXX","value_4":"12667","value_5":"6"},"stream_type":"COOKIE"}
{"type":"ATTRIBUTED","conversion":{,"value_1":"000000167865321","value_3":"YYYY","value_4":"12668","value_5":"0"},"stream_type":"COOKIE"}
{"type":"NON_ATTRIBUTED","conversion":{,"value_1":"000000134535321","value_3":"AAAA","value_4":"12669","value_5":"9"},"stream_type":"COOKIE"}
{"type":"NON_ATTRIBUTED","conversion":{,"value_1":"000000100357651","value_3":"WWWW","value_4":"12670","value_5":"2"},"stream_type":"COOKIE"}
私は取得しています出力は次のようになります。 タイプ、変換、のstream_type NON_ATTRIBUT ED、アレイ、COOKIE NON_ATTRIBUTED、アレイ、COOKIE
私は期待していた出力がある: タイプ、変換、_1、VALUE_3、value_4、value_5、のstream_type NON_ATTRIBUTED、000000100355321、XXXX、1267、6、COOKIE 。 。
このよう感謝すべてのヘルプは
これは完璧です!ありがとうございます:) – user2647092
@Applejack 'if(empty($ firstLineKeys))'の場合、 '$ firstLineKeys'は真でなければならず、' if'ループ内の文が実行されるために空でなければなりませんか? – pHorseSpec
@pHorseSpecこの行は問題自体に関連していないので、変更しませんでした。いくつかのJSONをCSVに変換する必要がある場合は、まずJSONとCSVが異なるデータ構造であるため、CSVファイルの構造を決定する必要があります。JSONはツリーで、CSVはテーブルです。トピックは独自の構造を構築し始めましたが、彼はコードとJSONファイルで間違いを犯しました。 –