Maison > développement back-end > Tutoriel Python > Comment analyser un fichier JSON contenant plusieurs objets JSON en Python ?

Comment analyser un fichier JSON contenant plusieurs objets JSON en Python ?

DDD
Libérer: 2024-12-04 02:55:10
original
424 Les gens l'ont consulté

How to Parse a JSON File Containing Multiple JSON Objects in Python?

Chargement et analyse d'un fichier JSON contenant plusieurs objets JSON

Contrairement aux fichiers JSON standard, qui encapsulent toutes les données dans un seul objet ou tableau, certains formats JSON stockent des objets individuels sous forme de lignes distinctes dans un fichier texte. Cela peut entraîner des difficultés lors de la tentative d'analyse d'un tel fichier en Python.

Résolution de l'erreur ValueError

Lors de l'utilisation de la fonction json.load() de Python pour charger un fichier JSON avec plusieurs objets, vous pouvez rencontrer une exception « ValueError : Extra data ». Cette erreur indique que le fichier contient des données inattendues après le premier objet analysé.

Solution : analyse ligne par ligne

Pour gérer ce problème, vous devez traiter chaque ligne du fichier en tant qu'objet JSON indépendant. Remplacez votre code actuel par ce qui suit :

import json

data = []
with open('file') as f:
    for line in f:
        data.append(json.loads(line))
Copier après la connexion

Ce code parcourt chaque ligne du fichier, l'analyse en tant qu'objet JSON et l'ajoute à une liste.

Prise en compte des fichiers volumineux

Si le fichier JSON est particulièrement volumineux, l'ajout de tous les objets à une seule liste peut consommer une mémoire excessive. Pour atténuer cela, traitez chaque objet séparément avant de passer à la ligne suivante. Évitez :

data = []  # List of all objects
Copier après la connexion

Au lieu de cela, traitez chaque objet selon vos besoins :

for line in f:
    process_object(json.loads(line))
Copier après la connexion

Gestion des objets JSON délimités

Si votre fichier JSON contient des objets séparés par des délimiteurs, tels que des virgules ou des nouvelles lignes, vous pouvez utiliser la technique suivante pour analyser chacun objet :

import json, io

# Read delimited JSON objects from a file
with open('file') as f:
    json_string = f.read()

# Create a buffered reader
json_buffer = io.StringIO(json_string)

while True:
    # Read next JSON object from the buffer
    json_object = json.load(json_buffer)
    
    # Process JSON object
    if not json_object:  # Reached the end of the file
        break
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal