Sto provando a serializzare i miei oggetti Python in JSON usando json.dumps
. Se serializzi un dict
usando json.dumps
, verrà ovviamente serializzato come un dizionario JSON {..}
; se serializzi un list
o un tuple
, sarà un array JSON.Come convertire Python dict in JSON come lista, se possibile
Voglio sapere se c'è un modo per serializzare facilmente un Python dict
come JSON list
, se possibile. Da se possibile, intendo se le chiavi partono da 0 e vengono sequenziati, per esempio:
{0:'data',1:'data',2:'data}
Quanto sopra dovrebbe essere serializzato in JSON come: '{"0": "data", "1": "data", "2": "data"}'
, ma vorrei che fosse serializzato come ['data','data','data']
poiché i tasti inizia da 0 e sono sequenziati.
Il mio ragionamento per questo è perché ho molti dati JSON che sono serializzati da PHP, dove negli array PHP sono presenti chiavi e se le chiavi sono sequenziate come descritto sopra, PHP json.encode
utilizza matrici, se sono immesse in qualsiasi altro modo, sono serializzati come dizionari JSON. Voglio che le mie serializzazioni JSON corrispondano per il mio codice PHP e Python. Sfortunatamente, cambiare il codice PHP non è un'opzione nel mio caso.
Qualche suggerimento? L'unica soluzione che ho trovato è scrivere la mia funzione per verificare e verificare ogni dizionario Python e vedere se può essere prima convertito in list
prima di json.dumps
.
EDIT: Questo oggetto che sto serializzazione potrebbe essere una list
o un dict
, così, si potrebbe avere dicts supplementari all'interno di esso, e le liste, e così via (nidificazione). Mi chiedo se ci sia un modo 'semplice' per farlo, altrimenti credo di poter scrivere una soluzione ricorsiva da solo. Ma è sempre meglio usare il codice esistente per evitare altri bug.
Non sono sicuro se 'dict.values ()' funzionerà in py3k. Inoltre, FWIW, dicts non è un tipo di dati ordinato, quindi l'ordine della lista serializzata sarà ben definito, ma "arbitrario" anche se si fa 'json.dumps (list (dict.values ()))' – mgilson