Cargar y analizar un archivo JSON con varios objetos JSON en Python

Estoy tratando de cargar y analizar un archivo JSON en Python . Pero estoy atascado tratando de cargar el archivo:

import json json_data = open('file') data = json.load(json_data) 

Rendimientos:

 ValueError: Extra data: line 2 column 1 - line 225116 column 1 (char 232 - 160128774) 

Miré a 18.2. json : codificador y decodificador JSON en la documentación de Python, pero es bastante desalentador leer esta documentación de aspecto horrible.

Tienes un archivo de texto en formato JSON Lines . Necesitas analizar tu archivo línea por línea:

 import json data = [] with open('file') as f: for line in f: data.append(json.loads(line)) 

Cada línea contiene JSON válido, pero en conjunto, no es un valor JSON válido ya que no hay una lista de nivel superior ni una definición de objeto.

Tenga en cuenta que debido a que el archivo contiene JSON por línea, se le guardan los dolores de cabeza de intentar analizarlo todo de una vez o descubrir un analizador JSON de transmisión. Ahora puede optar por procesar cada línea por separado antes de pasar a la siguiente, ahorrando memoria en el proceso. Probablemente no quiera agregar cada resultado a una lista y luego procesar todo si su archivo es realmente grande.

Si tiene un archivo que contiene objetos JSON individuales con delimitadores intermedios, use ¿Cómo uso el módulo ‘json’ para leer un objeto JSON a la vez? para analizar objetos individuales utilizando un método de almacenamiento en búfer.

Eso está mal formateado. Tiene un objeto JSON por línea, pero no están contenidos en una estructura de datos más grande (es decir, una matriz). Deberá reformatearlo para que comience con [ y termine con ] con una coma al final de cada línea, o analizarlo línea por línea como diccionarios separados.

para aquellos que tropiezan con esta pregunta: la biblioteca de python jsonlines (mucho más joven que esta pregunta) con elegancia. Maneja archivos con un documento json por línea. ver https://jsonlines.readthedocs.io/