2012-02-06 13 views
10

Sto tentando di analizzare i dati di una risposta JSON da youtube api ma continuo a ricevere un errore.JSON valido che fornisce JSONDecodeError: Expecting, delimiter

Ecco il frammento di cui soffocamento:

data = json.loads("""{ "entry":{ "etag":"W/\"A0UGRK47eCp7I9B9WiRrYU0.\"" } }""") 

..e questo accade:

JSONDecodeError: Expecting , delimiter: line 1 column 23 (char 23) 

ho confermato che si tratta di JSON valido e non ho alcun controllo sulla formattazione di esso quindi, come posso superare questo errore?

risposta

20

Avrete bisogno di un r prima """, o sostituire tutte \ con \\. Questo non è qualcosa che si dovrebbe preoccuparsi quando viene letto il JSON da qualche altra parte, ma qualcosa nella stringa stessa.

data = json.loads(r"""{ "entry":{ "etag":"W/\"A0UGRK47eCp7I9B9WiRrYU0.\"" } }""")

vedere here per ulteriori informazioni

3

È necessario aggiungere r prima della stringa jSON.

>>> st = r'{ "entry":{ "etag":"W/\"A0UGRK47eCp7I9B9WiRrYU0.\"" } }' 
>>> data = json.loads(st) 
>>> 
+0

Penso che sia meglio usare "" "anziché" per racchiudere il json perché i dati possono contenere citazioni singole senza escape in esso. Grazie per la risposta. – ofko

+0

@ofko: So che l'ho appena scritto per chiarezza. – RanRag

Problemi correlati