Conversion de JSON au format CSV en utilisant PHP
Je suis en train de convertir un fichier json en format csv à l'aide d'un script php. Le code est comme suit:
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));
}
Ce type de travaux, mais c'est seulement de retour à l'extérieur des variables du fichier JSON, et j'obtiens un "Tableau de conversion de chaîne de caractères" avertissement
Les données JSON ressemble à ceci:
{"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"}
La sortie que je reçois est :
type de conversion,stream_type
NON_ATTRIBUTED,Tableau,COOKIE
NON_ATTRIBUTED,Tableau,COOKIE
La sortie, je m'attends à:
type de conversion,valeur_1,value_3,value_4, value_5 ,stream_type
NON_ATTRIBUTED,000000100355321, XXXX, 1267, 6, COOKIE
..
Toute aide appréciée comme cela est très nouveau pour moi
source d'informationauteur user2647092 | 2013-12-18
Vous devez vous connecter pour publier un commentaire.
json_decode($json, true); convertit les objets JSON pour les tableaux associatifs. Donc, ce
Devenir ce:
Comme vous le voyez il y a des tableaux imbriqués. Et vous essayez d'insérer tous les éléments du tableau à votre fichier texte (csv est un simple fichier texte) avec cette ligne:
Il fonctionne bien quand l'élément de tableau de chaîne de caractères. Mais lorsque l'élément est le tableau que nous avons obtenu le Tableau de conversion de chaîne de caractères. Donc, vous devez utiliser la boucle ou array_merge sur un tableau imbriqué pour l'en empêcher.
Je ne peux pas comprendre clairement comment votre csv doit ressembler, mais j'espère que cette correction de ton code va vous aider. Si non, écrivez un commentaire ci-dessous.
Il y a aussi une erreur dans votre json inutiles par des virgules:
"conversion":{,