Chargement d'un fichier JSON avec python 2.7

Fermé
TitiToto - Modifié par crapoulou le 2/11/2016 à 21:10
dsy73 Messages postés 9252 Date d'inscription dimanche 22 août 2010 Statut Contributeur Dernière intervention 23 octobre 2020 - 3 nov. 2016 à 05:28
Bonjour,

Voilà mon fichier JSON.Je veux charger les listes appelées data; une par une; les unes après les autres.


Il s'agit d'un exemple. Mon vrai fichier fait 500Mo, et lorsque je le charge j'ai un "memory error".

     {
          "earth": {
            "europe": [
              {"name": "Paris", "type": "city"},
              {"name": "Thames", "type": "river"},
              {"par": 2, "data": [1,7,4,7,5,7,7,6]},
              {"par": 2, "data": [1,0,4,1,5,1,1,1]},
              {"par": 2, "data": [1,0,0,0,5,0,0,0]}
                ],
            "america": [
              {"name": "Texas", "type": "state"}
            ]
          }
        }



Voilà ce que j'ai essayé:

    import ijson
    filename = "testfile.json"
   
    f = open(filename)
    mylist = ijson.items(f, 'earth.europe[2].data.item')
    print mylist


Mais ça ne marche pas!

Est-ce que quelqu'un a un script à proposer (peut-être en utilisant ijson ou ujson). A noté que j'ai essayé en chargeant simplement avec json.load, mais que la taille du fichier fait planter python 2.7...


Merci d'avance!

EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.
A voir également:

1 réponse

dsy73 Messages postés 9252 Date d'inscription dimanche 22 août 2010 Statut Contributeur Dernière intervention 23 octobre 2020 2 476
3 nov. 2016 à 05:28
Salut
il te faudrait une méthode qui évite de charger tout le JSON en mémoire. Par exemple :
https://github.com/henu/bigjson
https://github.com/kashifrazzaqui/json-streamer
0