Extraction itérative de plusieurs objets JSON à partir d'un seul fichier
Lorsque vous traitez des fichiers JSON contenant plusieurs objets JSON, il est crucial de trouver un moyen efficace pour extraire des éléments de données spécifiques de chaque objet.
Une approche consiste à utiliser la fonction json.JSONDecoder.raw_decode de Python. Cette fonction vous permet de décoder de grandes chaînes JSON contenant plusieurs objets, même si elles ne sont pas enveloppées dans un tableau racine.
Pour commencer, vous devrez supprimer tout espace de début du document JSON. Ensuite, vous pouvez utiliser raw_decode dans une boucle pour extraire les objets un par un. La fonction renvoie la dernière position où l'objet analysé s'est terminé et l'objet lui-même.
Voici un extrait de code qui illustre cette approche :
<code class="python">from json import JSONDecoder, JSONDecodeError import re NOT_WHITESPACE = re.compile(r'\S') def decode_stacked(document, pos=0, decoder=JSONDecoder()): while True: match = NOT_WHITESPACE.search(document, pos) if not match: return pos = match.start() try: obj, pos = decoder.raw_decode(document, pos) except JSONDecodeError: # handle error raise yield obj</code>
En utilisant cette méthode, vous pouvez décoder une chaîne JSON avec plusieurs objets et extraire des éléments spécifiques dans un bloc de données. Par exemple, si votre fichier JSON contient la structure suivante :
<code class="json">{"ID":"12345","Timestamp":"20140101", "Usefulness":"Yes", "Code":[{"event1":"A","result":"1"},…]} {"ID":"1A35B","Timestamp":"20140102", "Usefulness":"No", "Code":[{"event1":"B","result":"1"},…]} {"ID":"AA356","Timestamp":"20140103", "Usefulness":"No", "Code":[{"event1":"B","result":"0"},…]} …</code>
Votre code pourrait utiliser la boucle suivante pour extraire les valeurs "Timestamp" et "Utility" :
<code class="python">import pandas as pd data = [] for obj in decode_stacked(json_string): data.append([obj["Timestamp"], obj["Usefulness"]]) df = pd.DataFrame(data, columns=["Timestamp", "Usefulness"])</code>
Ceci La méthode fournit un moyen flexible et efficace d'extraire plusieurs objets JSON à partir d'un seul fichier, vous permettant de rassembler des données de structures JSON complexes dans un format tabulaire.
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!