Python ValueError: Ningún objeto JSON podría decodificarse

Estoy tratando de leer un json y obtener sus valores. Tengo una carpeta con los archivos de JSON, y necesito abrir todos los archivos y obtener los valores de ellos.

Este es el código:

# -*- encoding: utf-8 -*- from pprint import pprint import json import os def start(): for dirname, dirnames, filenames in os.walk('test'): for filename in filenames: json_file = open(os.path.join(dirname, filename)).read() # json_file = unicode(json_file, 'utf-8') json_data = json.loads(json_file) pprint(json_data) for key, value in json_data.items(): print "KEY : ", key print "VALUE: ", value start() 

Este es uno de los JSON

 { "test" : "Search User 1", "url" : "http://127.0.0.1:8000/api/v1/user/1/?format=json", "status_code" : 200, "method" : "get" } 

Pero cuando lo ejecuto, me sale esto:

 ValueError: No JSON object could be decoded 

¿Qué diablos está mal? Ayer estaba funcionando exactamente como está ahora, o estoy loco

Lo intenté de esta manera:

 from pprint import pprint import json import os for dirname, dirnames, filenames in os.walk('test'): for filename in filenames: json_file_contents = open(os.path.join(dirname, filename)).read() try: json_data = json.loads(json_file_contents) except ValueError, e: print e print "ERROR" 

No puedo ver ningún error ‘-‘

 for filename in filenames: with open(os.path.join(dirname,filename)) as fd: json_data = fd.read() print json_data 

De esta manera puedo ver lo que contienen los archivos json, pero no puedo usar, por ejemplo, el acceso mediante la clave, como json_data['url']

Es posible que el método .read() mueva el cursor al final del archivo. Tratar:

 for filename in filenames: with open(os.path.join(dirname,filename)) as fd: json_data = json.load(fd) 

y ver a donde te lleva eso.

Esto, por supuesto, supone que tiene JSON válido , como lo demuestra su ejemplo. (Esté atento a las comas)

Para mí fue un problema de encoding, puede intentar usar Notepad ++ para editar su archivo .json y cambiar la encoding a UTF-8 sin BOM. Otra cosa que podrías comprobar es si tu script json es válido

Resolví este error al convertir el archivo json a UTF-8 sin BOM. A continuación se muestra un fragmento de python y url para la conversión

 myFile=open(cases2.json, 'r') myObject=myFile.read() u = myObject.decode('utf-8-sig') myObject = u.encode('utf-8') myFile.encoding myFile.close() myData=json.loads(myObject,'utf-8') 

Tuve el mismo problema hoy. Tratando de entender la causa, encontré este problema relacionado con el módulo json :

http://bugs.python.org/issue18958

Verifique si el archivo está codificado en UTF8 y si es el caso, luego use el módulo de codecs para abrirlo y leerlo o simplemente omita la lista de materiales (marca de orden de bytes).

La respuesta que sugiere que .read () estaba moviendo el cursor llevó a una resolución de mi versión del problema. Cambié

 print response.read() ... json_data = json.loads(response.read()) 

a

 responseStr = response.read() print responseStr ... json_data = json.loads(responseStr)