json_decode renvoie null après avoir stocké 2 tableaux dans le fichier .json - validation
P粉333395496
P粉333395496 2024-02-17 22:35:10
0
1
409

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 ?

P粉333395496
P粉333395496

répondre à tous(1)
P粉724256860

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) :

[
    [{"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}]
]

En d'autres termes, cela devrait ressembler à ceci :

  1. L'utilisateur envoie le formulaire
  2. Vous avez lu le contenu du fichier
  3. Vous pouvez le décoder en utilisant json_decode()
  4. Vous ajoutez au tableau
  5. Vous pouvez le réencoder en utilisant json_encode()
  6. Vous enregistrez l'intégralité du nouveau JSON dans le fichier, en remplaçant l'ancien contenu
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal