2014-04-01 16 views
10

se qualcuno con qualche conoscenza sulla bella stampa JSON potrebbe aiutarmi con questo sarei estremamente grato!Pretty print JSON python

Sto cercando di convertire una stringa di pitone complesso in formato JSON, utilizzando la funzione qui sotto per spostare la stringa JSON in un file:

with open('data.txt', 'wt') as out: 
    pprint(string, stream=out) 

Il problema è che sto ricevendo errori di sintassi per la parentesi quadre credo, perché questo è un argomento nuovo per me e non riesco a capire come aggirare questo. Il formato JSON ho bisogno è come questo:

{ 
     cols:[{id: 'Time', "label":"Time","type": "datetime"}, 
       {id: 'Time', "label":"Latency","type":"number"}], 
     rows:[{c: [{v: %s}, {v: %s}]}, 
       {c: [{v: %s}, {v: %s}]}, 
       {c: [{v: %s}, {v: %s}]}, 
       {c: [{v: %s}, {v: %s}]} 
       ] 
    } 

Sto seguendo l'API di visualizzazione di Google, si può essere familier con esso, ma ho bisogno di grafici dinamici. Il codice sopra riportato è il formato che l'API richiede per creare un grafico, quindi sono in procinto di capire come ottenere i miei dati da MySQL in questo formato, in modo che il grafico possa essere letto e visualizzato. Il metodo che ho pensato era di aggiornare periodicamente un file contenente il formato JSON richiesto, motivo per cui sono presenti% s, tuttavia MartijnPeters suggerisce che questo non è valido.

Qualcuno conosce il modo più semplice in cui posso farlo o mi può indirizzare a qualsiasi materiale che possa essere d'aiuto? Grazie!!

risposta

41

Si sta scrivendo Rappresentazioni Python, non JSON.

Utilizzare la json.dump() function a scrivere JSON pretty-stampato, invece, direttamente al file:

with open('data.txt', 'wt') as out: 
    res = json.dump(obj, out, sort_keys=True, indent=4, separators=(',', ': '))