recherche

Maison  >  Questions et réponses  >  le corps du texte

json_decode renvoie null après avoir stocké 2 tableaux dans le fichier .json - validation

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粉333395496P粉333395496270 Il y a quelques jours401

répondre à tous(1)je répondrai

  • P粉724256860

    P粉7242568602024-02-18 00:20:20

    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

    répondre
    0
  • Annulerrépondre