name - Intentando analizar JSON en Python. ValueError: esperando el nombre de la propiedad
json python 3 (4)
Estoy tratando de analizar un objeto JSON en un dict
Python. Nunca he hecho esto antes. Cuando busqué en Google este error en particular, ( ¿Qué pasa con el primer carácter? ), Otras publicaciones han dicho que la cadena que se está cargando no es en realidad una cadena JSON. Sin embargo, estoy bastante seguro de que es esto.
En este caso, eval()
funciona bien, pero me pregunto si hay una forma más adecuada.
Nota: Esta cadena proviene directamente de Twitter, a través de herramientas ptt.
>>> import json
>>> line = ''{u/'follow_request_sent/': False, u/'profile_use_background_image/': True,
u/'default_profile_image/': False,
u/'verified/': False, u/'profile_sidebar_fill_color/': u/'DDEEF6/',
u/'profile_text_color/': u/'333333/', u/'listed_count/': 0}''
>>> json.loads(line)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/__init__.py", line 326, in loads
return _default_decoder.decode(s)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/decoder.py", line 366, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/decoder.py", line 382, in raw_decode
obj, end = self.scan_once(s, idx)
ValueError: Expecting property name: line 1 column 1 (char 1)
A veces puede tener este error porque Python no reconoce bien sus valores de cadena. Como ejemplo: he pasado bastante tiempo buscando el origen de este tipo de error. Esto es lo que encontré.
A veces, un lenguaje reconoce un tipo de citas y no otra: por cierto, para analizar una cadena en json en JavaScript, todas las comillas deben estar en el formato ''
para analizar una cadena en json en JavaScript, todas las comillas deben estar en el "formato que no es realmente lógico".
Con suerte, puede usar la función de reemplazo. Para Python:
json.loads(s.replace("/'", ''"''));
Espero que te ahorre el tiempo que he pasado buscando este error.
Asegúrate de que tu archivo JSON no tenga líneas que comiencen con //
(¡lo que erróneamente se supone que son comentarios!). Tengo el mismo mensaje ValueError
y desapareció después de eliminar //
de mi archivo.
Eso definitivamente no es JSON, no como se imprimió anteriormente de todos modos. Ya se ha analizado en un objeto Python: JSON tendría false
, no False
, y no mostraría cadenas como u
para unicode (todas las cadenas JSON son unicode). ¿Estás seguro de que no estás convirtiendo tu cadena json convertida en un objeto de Python de forma gratuita en algún lugar de la cadena, y por lo tanto cargarla en json.loads () es obviamente incorrecta porque en realidad no es una cadena?
Recibí este error cuando tenía una coma colgante al final de una lista de propiedades. Debido a la coma, esperaba otro nombre de propiedad, pero no había ninguno.