J'essaie de convertir un json imbriqué avec plusieurs tableaux et objets jsons en fichier CSV en utilisant python. J'ai essayé plusieurs méthodes, mais j'ai obtenu un fichier CSV avec seulement un tableau. Je veux imprimer les nombreux filtres qui ont des valeurs uniques à l'intérieur, donc je ne suis pas en mesure d'imprimer le 2ème tableau avec le coût, mon exemple de json comme ci-dessous :
SAMPLE JSON :
{
"breakdown":[
{
"filter":"tags",
"cost":5517.734,
"values":[
{
"count":13,
"subvalues":[
{
"count":1,
"subvalue":"BizOps-VM-20",
"cost":227.576
{
"count":4,
"subvalue":"<nulltagvalue>",
"cost":70.358
},
"subvalues":[
{
"count":2,
"subvalue":"cb",
"cost":4.584
}
],
"cost":4.584,
"value":"TagNewForTestw"
}
]
},
{
"filter":"account",
"cost":2954.905,
"values":[
{
"count":86,
"cost":1613.508,
"value":"628455167342"
},]
},
"time":[
{
"cost":112.793,
"time":"2017-05-16"
},
{
"cost":112.748,
"time":"2017-05-17"
},
{
"cost":112.739,
"time":"2017-05-18"
},
]
maintenant, j'ai un tableau de temps où le temps et le coût sont en json, je veux que cela s'imprime en csv en utilisant le code python, mais quand j'essaie d'imprimer, je reçois le format ###### à la place des valeurs de temps. et une autre chose est que je reçois des valeurs de temps répétées imprimées même après la fin du temps du tableau.
Mon code python :
import json
import csv
import time
f = open('cost_drilldown_data.json')
data = json.load(f)
s=csv.writer(open('cd13old.csv','w'))
s.writerow(["filter","cost","value","cost","subvalue","cost"])
i=0
for breakdown in data['breakdown']:
for values in breakdown['values']:
if 'subvalues' in values:
for subvalues in values['subvalues']:
for time in data['time']:
s.writerow([breakdown['filter'],breakdown["cost"],
values['value'],values['cost'],subvalues["subvalue"],
subvalues["cost"],time['time'],time['cost']])
else :
s.writerow([breakdown['filter'],"","",values['value'],values['cost']])
La sortie est :
filter,cost,value,cost,subvalue,cost,time,cost
tags,5517.734,Name,462.62,BizOps-VM-20,227.576,2017-05-16,112.793
tags,5517.734,Name,462.62,BizOps-VM-20,227.576,2017-05-17,112.748
tags,5517.734,Name,462.62,BizOps-VM-20,227.576,2017-05-18,112.739
tags,5517.734,Name,462.62,BizOps-VM-20,227.576,2017-05-19,107.165
tags,5517.734,Name,462.62,BizOps-VM-20,227.576,2017-05-20,89.988
tags,5517.734,Name,462.62,BizOps-VM-20,227.576,2017-05-21,88.773
tags,5517.734,Name,462.62,BizOps-VM-20,227.576,2017-05-22,96.591
tags,5517.734,Name,462.62,BizOps-VM-20,227.576,2017-05-23,104.809
tags,5517.734,Name,462.62,BizOps-VM-20,227.576,2017-05-24,104.471
tags,5517.734,Name,462.62,BizOps-VM-20,227.576,2017-05-25,104.472
tags,5517.734,Name,462.62,BizOps-VM-20,227.576,2017-05-26,103.536
tags,5517.734,Name,462.62,BizOps-VM-20,227.576,2017-05-27,83.205
tags,5517.734,Name,462.62,BizOps-VM-20,227.576,2017-05-28,83.103
tags,5517.734,Name,462.62,BizOps-VM-20,227.576,2017-05-29,83.111
tags,5517.734,Name,462.62,BizOps-VM-20,227.576,2017-05-30,84.555
tags,5517.734,Name,462.62,BizOps-VM-20,227.576,2017-05-31,86.986
tags,5517.734,Name,462.62,BizOps-VM-20,227.576,2017-06-01,103.024
tags,5517.734,Name,462.62,BizOps-VM-20,227.576,2017-06-02,100.905
tags,5517.734,Name,462.62,BizOps-VM-20,227.576,2017-06-03,102.062
tags,5517.734,Name,462.62,BizOps-VM-20,227.576,2017-06-04,105.243
tags,5517.734,Name,462.62,BizOps-VM-20,227.576,2017-06-05,105.134
tags,5517.734,Name,462.62,BizOps-VM-20,227.576,2017-06-06,111.764
tags,5517.734,Name,462.62,BizOps-VM-20,227.576,2017-06-07,107.455
tags,5517.734,Name,462.62,BizOps-VM-20,227.576,2017-06-08,107.62
tags,5517.734,Name,462.62,BizOps-VM-20,227.576,2017-06-09,107.61
tags,5517.734,Name,462.62,BizOps-VM-20,227.576,2017-06-10,102.53
tags,5517.734,Name,462.62,BizOps-VM-20,227.576,2017-06-11,102.282
tags,5517.734,Name,462.62,BizOps-VM-20,227.576,2017-06-12,105.52
tags,5517.734,Name,462.62,BizOps-VM-20,227.576,2017-06-13,93.617
tags,5517.734,Name,462.62,BizOps-VM-20,227.576,2017-06-14,41.094
tags,5517.734,Name,462.62,,70.358,2017-05-16,112.793
tags,5517.734,Name,462.62,,70.358,2017-05-17,112.748
tags,5517.734,Name,462.62,,70.358,2017-05-18,112.739
Il imprime les valeurs encore et encore, j'ai essayé d'utiliser l'itération mais je n'ai pas réussi à arrêter la répétition des valeurs. Donc, si quelqu'un peut m'aider ou me guider, je suis coincé.
LE RÉSULTAT ATTENDU EST DE :
filtre,coût,valeur,coût,sous-valeur,coût,temps,coût
tags,5517.734,Name,462.62,BizOps-VM-20,227.576,2017-05-16,112.793 tags,5517.734,Name,462.62,,70.358,2017-05-16,112.793 tags,5517.734,Name,462.62,BizOps01,60.188,2017-06-10,102.53