J'ai une question sur l'utilisation de PHP avec JSON.
J'utilise un tableau pour stocker dans le fichier .json. Le tableau contenant les données provient de mon index.php et est rempli par l'utilisateur, jusqu'ici tout va bien. Tout est enregistré dans .json et lorsque plus d'un utilisateur y stocke du contenu (ce qui signifie qu'il y a 2 tableaux dans le fichier .json), il ne renvoie pas les données mais renvoie NULL. Est-ce qu'il me manque quelque chose concernant l'enregistrement ou la lecture d'un fichier JSON ? J'ai trouvé que mon JSON n'était pas valide, il me montrait "Plusieurs éléments JSON racine" à l'intérieur du validateur.
Voici mon code pour écrire et lire .json :
public function JSONwrite($lists) { $listFill = json_encode($lists)."\n"; file_put_contents("/var/www/html/3sprint/test.json",$listFill,FILE_APPEND); } public function JSONread() { $string = file_get_contents("/var/www/html/3sprint/test.json"); $stringContent = json_decode($string, true); var_dump($stringContent); }
Mon fichier JSON ressemble à ceci (2 tableaux remplis) :
[{"count":"3","name":"testnameone"},{"count":"5","name":"testnametwo"},{"count":"6","name":"testnamethree"},{"info":106}] [{"count":"3","name":"testnamefour"},{"count":"5","name":"testnamefive"},{"count":"6","name":"testnamesix"},{"info":521}]
C'est ici que je remplis le tableau, puis je le transmets à la méthode JSONwrite (c'est à l'intérieur de la boucle foreach) :
$lists[]= [ "count"=>$count, "name"=>$name ]; } } $lists[]= [ "info" => $number ];
Existe-t-il un moyen de le valider comme ça pour que le décodage ne renvoie pas null ?
Un tableau sous un autre tableau n'est pas un JSON invalide. Vous devez utiliser un tableau racine et y conserver vos utilisateurs (je ne sais pas si le contenu du tableau a du sens, mais vous voyez l'idée) :
En d'autres termes, cela devrait ressembler à ceci :
json_decode()
json_encode()