Module JSON / Lire un fichier [Perl] - Perl - Programmation
Marsh Posté le 14-04-2018 à 12:51:02
C'est normal, puisque tu ne donnes pas à decode_json du json valide.
Si tu mets ton contenu (des lignes, donc de tableau) dans un tableau, il y aura pas de pb.
decode_json('['.$json_text.']');
Code :
|
en sortie
ContentName = 116758.mpg |
Note: comme decode_json renvoie un scalaire, $decoded, et que l'on décode un tableau, $decoded ne peut être qu'une référence au tableau, et on récupère le tableau en faisant @{$decoded} ou en simplifié, @$decoded.
Je ne ferme pas le fichier ouvert, car cela sera fait automatiquement à la sortie de json_decode_file (et les erreurs à son ouverture seront gérées automatiquement avec autodie).
A+,
Marsh Posté le 14-04-2018 à 18:10:45
Merci Gilou !
C'est parfait
Dernière petite chose,
Mon fichier commence par un {PACKAGE.db:{...}}
As-tu une petite astuce pour zapper cela ?
Ex:
Code :
|
Merci d'avance
Marsh Posté le 15-04-2018 à 04:04:10
Ça serait pas plutôt quelque chose de valide en json, comme
{"PACKAGE.db":[
{"opcode":"1002","structtype":"409"...},
{"opcode":"1002","structtype":"409"...}
]}
Bref, si on pouvait savoir si au final ton fichier est un fichier json valide ou pas, ça aiderait.
A+,
Marsh Posté le 15-04-2018 à 18:20:43
Bonjour,
Désolé pour ce manque de précision
Voici le fichier en question
Je dirai que c'est bien un format JSON avec un object qui englobe le tout
Mais je ne sais pas comment l'utiliser
Code :
|
Marsh Posté le 15-04-2018 à 21:33:59
Non, ce n'est pas un format json.
Comme je l'ai dit, au minimum ça devrait être sous la forme
{"PACKAGE.db":[
{"opcode":"1002","structtype":"409"...},
{"opcode":"1002","structtype":"409"...}
]}
C'est manifestement la sortie d'un truc qui voudrait écrire au format json mais qui est mal codé.
Par exemple
"title":"(null)" en json, ça devrait être "title":null
"contents[0].contentName":"20120420_05.ts" est un bout de tableau json, tableau a 6 éléments, bien que l'on ait "contents[0].contentName":"20120420_05.ts",
Bref, la première ligne, qui une fois expansée est ceci:
{ |
retranscrit un truc qui doit plutôt ressembler à
{ |
(le forum a bouffé mon formattage)
On a l'impression que l'on a évité d'imbriquer les structures dans les lignes.
A+,
Marsh Posté le 15-04-2018 à 22:19:20
Après c'est du cas par cas en fonction du format des données, par exemple:
Code :
|
A+,
Marsh Posté le 13-04-2018 à 17:29:25
Bonjour,
Je test le module JSON pour extraire des données, cela fonctionne quand mon fichier ne contient qu'une entrée.
Du coup j'essaye avec 2 entrées mais cela ne fonctionne pas et je ne sais pas pourquoi
Sachant que je vais avoir ~100 000 entrées dans mon fichier final
Voici le code:
Voici un fichier avec une entrée:
En sortie j'ai bien:
Voici un fichier avec 2 entrées:
L'erreur que j'ai est:
Donc il y a quelque chose qui n'aime pas avec le local $/ j'imagine, mais je ne sais pas comment lui dire que ce sont 2 lignes différentes
Merci d'avance pour votre aide.