PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → JSONVersVariant() Plantage mémoire
JSONVersVariant() Plantage mémoire
Débuté par Lionel, 16 oct. 2018 12:11 - 15 réponses
Posté le 16 octobre 2018 - 12:11
Hello,

J'ai un fichier JSON de près de 50Mo et JSONVersVariant provoque un crash mémoire.
Il me semble avoir lu/entendu qu'il y avait quelque part un exemple de parsing de fichier JSON de grande taille.

Quelqu'un aurait des infos à ce sujet?
Merci
Membre enregistré
256 messages
Popularité : +29 (29 votes)
Posté le 16 octobre 2018 - 14:13
Bonjour

Vous avez dû croiser "xmlLecteur" mais ça concerne XML et pas JSON.
Posté le 16 octobre 2018 - 14:26
Très juste merci Yann

Bon, il ne me reste plus qu'à coder tout ça 'à la hache!'.
S'agissant de dossiers patients, je vais extraire une chaine JSON par dossier avant de faire JSONVersVariant()

Bon dév!
Membre enregistré
2 571 messages
Popularité : +222 (260 votes)
Posté le 16 octobre 2018 - 14:33
Bonjour,

Le projet est en 32 ou 64 bits ?

--
Cordialement,

Philippe SAINT-BERTIN
Posté le 16 octobre 2018 - 14:36
Bonjour Philippe, 32bits
Membre enregistré
2 571 messages
Popularité : +222 (260 votes)
Posté le 16 octobre 2018 - 16:07
Peux-tu tester en 64 bits voir si ça ne vient pas de là ?

--
Cordialement,

Philippe SAINT-BERTIN
Membre enregistré
281 messages
Popularité : +24 (26 votes)
Posté le 16 octobre 2018 - 22:04
Si en 32bits Windev n'est pas foutu de gérer un fichier de 50Mo... C'est triste!
Membre enregistré
2 571 messages
Popularité : +222 (260 votes)
Posté le 16 octobre 2018 - 22:49
Je suis tout à fait d'accord avec toi, mais ça vaut le coup d'essayer...

--
Cordialement,

Philippe SAINT-BERTIN
Membre enregistré
948 messages
Popularité : +30 (92 votes)
Posté le 17 octobre 2018 - 00:39
Posté le 17 octobre 2018 - 10:22
En 32bits, l'occupation mémoire atteint 1.6Go puis ça plante
En 64bits on atteint 4Go. Il n'y a pas de crash mais ça rame. Windev lui même devient inutilisable, je dois rebooter.
De plus, à la fermeture de la fenêtre d'import, le programme est sensé libérer les ressources créées par cette même fenêtre, dans les fait c'est pas le cas, le niveau de mémoire utilisé reste élevé)

De toute façon, comme je ne sais pas où l'application est installée, je dois faire en sorte que cela fonctionne en 32bits
Membre enregistré
948 messages
Popularité : +30 (92 votes)
Posté le 17 octobre 2018 - 10:43
Coucou Lionel,

Si tu me paye le double de ce que tu me dois,
Je te donne un autre indice.

#JeNeManqueJamaisALAppelQuandCestLeJourDeLaPaye
Membre enregistré
2 571 messages
Popularité : +222 (260 votes)
Posté le 17 octobre 2018 - 11:05
Bonjour,

Une autre solution serait de créer une structure qui corresponde à ton json et de désérialiser dans la structure

--
Cordialement,

Philippe SAINT-BERTIN
Posté le 17 octobre 2018 - 11:52
Attention Charly, dans nos montagne on ne gère pas les problèmes sur un forum.
Tu veux que Je m'étale sur ta façon de travailler? Sur ton non respect de cahier des charges, tu as été grassement payé, tu a récupéré un PC pour livrer quoi, rappelle moi?
Oublie moi ça vaudra mieux pour toi!
Posté le 17 octobre 2018 - 11:53
Oui Philippe, c'est exactement ce que je suis en train de faire. C'était pas prévu mais bon...
Petite précision, je parlais de 50Mo, mais c'est plus de 100Mo une fois décrypté!
Membre enregistré
948 messages
Popularité : +30 (92 votes)
Posté le 17 octobre 2018 - 15:57
https://doc.pcsoft.fr/?1000021965&name=himportejson_fonction

--
In üs we trust - #92i

Pistolet en Belgique - #DébrouillardAJamais
Barszcz en Pologne - #RegardeLàOùJeSuisCarJeSuisLàOùIlFautÊtre
Pastis à Marseille - #TasJveuxDireOuTasPasJveuxDireMorray?
Message modifié, 17 octobre 2018 - 16:23
Membre enregistré
2 571 messages
Popularité : +222 (260 votes)
Posté le 17 octobre 2018 - 19:18
@Charly CANDO: Pour utiliser HImporteJSON(), il faut décrire un fichier et cela ne fonctionnera qu'avec un json simple. Si tu as un tableau de tableau, c'est mort.

Après je trouve bien dommage qu'un fichier json de 100 Mo ou 200 Mo amène ta RAM à 4Go. Il doit y avoir un problème quelque part. Ce serait intéressant de faire passer le cas à PC Soft afin qu'ils optimisent ça.

--
Cordialement,

Philippe SAINT-BERTIN