Mise en page d'un fichier json avec php
alex012
Messages postés
87
Date d'inscription
Statut
Membre
Dernière intervention
-
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
j'ai un petit problème, j'ai un fichier json que je veux modifier en php mais une fois modifié, il perd sa mise en page, tout est sur une ligne au lieu d'etre sur plusieurs lignes avec des tabulations.
c'est json_decode() et json_encode() qui posent problème mais je suis obligé de les utiliser, donc comment restructurer un fichier après avoir utilisé ces fonctions?
mon json en entrée
mon php
et mon json en sortie
j'ai un petit problème, j'ai un fichier json que je veux modifier en php mais une fois modifié, il perd sa mise en page, tout est sur une ligne au lieu d'etre sur plusieurs lignes avec des tabulations.
c'est json_decode() et json_encode() qui posent problème mais je suis obligé de les utiliser, donc comment restructurer un fichier après avoir utilisé ces fonctions?
mon json en entrée
{"Definitions" : [
{
"Mot" : "ra",
"Definition" : "ar"
},
{
"Mot" : "ab",
"Definition" : "ba"
},
{
"Mot" : "zf",
"Definition" : "fz"
},
{
"Mot" : "cx",
"Definition" : "xc"
}
]
}
mon php
$json_file = "JS/bla.json";
$lexique = file_get_contents($json_file);
$save_name = "JS/lexiqueSave/lexique-";
$save_name .= date('d-m-Y');
$save_name .= ".json";
file_put_contents($save_name, $lexique);
$lexique = json_decode($lexique);
$définition = $lexique->{'Definitions'};
array_push( $définition, array('Mot' => 'ale', 'Definition' => 'ela'));
sort($définition, SORT_FLAG_CASE);
$définition = array('Definitions' => $définition);
$définition = json_encode($définition);
file_put_contents("JS/bla1.json", $définition);
et mon json en sortie
{"Definitions":[{"Mot":"ab","Definition":"ba"},{"Mot":"ale","Definition":"ela"},{"Mot":"cx","Definition":"xc"},{"Mot":"ra","Definition":"ar"},{"Mot":"zf","Definition":"fz"}]}
A voir également:
- Json retour à la ligne
- Retour à la ligne excel formule - Guide
- Partager photos en ligne - Guide
- Notepad++ retour à la ligne ✓ - Forum Bureautique
- Retour à la ligne google sheet - Forum Google Docs
- Retour à la ligne google sheets android ✓ - Forum Google Docs
1 réponse
Bonjour,
Le "vrai" format du Json.. c'est celui retourné par ton code PHP.
Les retours à la ligne ne servent à rien (et certains éditeurs permettent de le visualiser automatiquement avec les indentations et le retour à la ligne sans avoir à faire ce "travail" manuellement )
Après... le json.. ça reste du texte ...
Rien ne t’empêche d'utiliser du "replace" pour insérer, devant chaque virgule, crochet... des retours à la ligne, des espaces ou des tabulations avant de réécrire le fichier.
NB: A l'avenir, merci de poster ton code en utilisant correctement les balises de code ( en y précisant le langage)
Explications à lire ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Le "vrai" format du Json.. c'est celui retourné par ton code PHP.
Les retours à la ligne ne servent à rien (et certains éditeurs permettent de le visualiser automatiquement avec les indentations et le retour à la ligne sans avoir à faire ce "travail" manuellement )
Après... le json.. ça reste du texte ...
Rien ne t’empêche d'utiliser du "replace" pour insérer, devant chaque virgule, crochet... des retours à la ligne, des espaces ou des tabulations avant de réécrire le fichier.
NB: A l'avenir, merci de poster ton code en utilisant correctement les balises de code ( en y précisant le langage)
Explications à lire ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
NB: excusez moi pour les balises code, mais elles ne fonctionnent pas quand je clique sur le language voulu, je vais donc faire à la main.
Merci
Quoi qu'il en soit.. sur quoi veux tu trier ? car bon... Tu as un array 2D ... et donc la fonction "sort" de base ne fonctionnera pas....
Il faut donc utiliser
https://www.php.net/manual/fr/function.array-multisort.php
Ou sinon un code à base de usort
https://www.php.net/manual/fr/function.usort.php
du genre :
Que tu peux étoffer en gérant les caractères accentués et les majuscules éventuellement. ( je te laisse le modifier à ta guise selon tes besoins )