Cela peut être fait en utilisant ijson . Le fonctionnement de ijson a été très bien expliqué par Jim Pivarski dans la réponse ci-dessus. Le code ci-dessous va lire un fichier et imprimer chaque json de la liste. Par exemple, le contenu du fichier est le suivant
[{"name": "rantidine", "drug": {"type": "tablet", "content_type": "solid"}},
{"name": "nicip", "drug": {"type": "capsule", "content_type": "solid"}}]
Vous pouvez imprimer chaque élément du tableau en utilisant la méthode suivante
def extract_json(filename):
with open(filename, 'rb') as input_file:
jsonobj = ijson.items(input_file, 'item')
jsons = (o for o in jsonobj)
for j in jsons:
print(j)
Note : "item" est le préfixe par défaut donné par ijson.
Si vous voulez accéder uniquement à des fichiers json spécifiques en fonction d'une condition, vous pouvez le faire de la manière suivante.
def extract_tabtype(filename):
with open(filename, 'rb') as input_file:
objects = ijson.items(input_file, 'item.drugs')
tabtype = (o for o in objects if o['type'] == 'tablet')
for prop in tabtype:
print(prop)
Cela n'imprimera que les json dont le type est tablet.