json_decode gibt null zurück, nachdem zwei Arrays in der .json-Datei gespeichert wurden – Validierung
P粉333395496
P粉333395496 2024-02-17 22:35:10
0
1
408

Ich habe eine Frage zur Verwendung von PHP mit JSON.

Ich verwende ein Array zum Speichern in einer .json-Datei. Das Array mit den Daten stammt aus meiner index.php und wird vom Benutzer gefüllt, soweit so gut. Alles wird in .json gespeichert und wenn ich mehr als einen Benutzer habe, der Inhalte darin speichert (was bedeutet, dass es 2 Arrays in der .json-Datei gibt), werden die Daten nicht zurückgegeben, sondern NULL. Übersehe ich etwas zum Speichern oder Lesen einer JSON-Datei? Ich habe festgestellt, dass mein JSON-Code ungültig ist. Im Validator wurden mir „Mehrere Root-JSON-Elemente“ angezeigt.

Das ist mein Code zum Schreiben und Lesen von .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);
    }

Meine JSON-Datei sieht so aus (2 Arrays gefüllt):

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

Hier fülle ich das Array auf und übergebe es dann an die JSONwrite-Methode (diese befindet sich innerhalb der foreach-Schleife):

$lists[]= [
                "count"=>$count,
                "name"=>$name
            ];
        }

    }

    $lists[]= [
        "info" => $number
    ];

Gibt es eine Möglichkeit, es auf diese Weise zu validieren, damit die Dekodierung nicht null zurückgibt?

P粉333395496
P粉333395496

Antworte allen(1)
P粉724256860

一个数组下的另一个数组是无效的 JSON。您应该使用一个根数组并将您的用户保留在其中(不确定数组中的内容是否有意义,但您明白了):

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

换句话说,应该如下所示:

  1. 用户发送表单
  2. 您已阅读文件内容
  3. 您可以使用 json_decode() 对其进行解码
  4. 您添加到数组
  5. 您可以使用 json_encode() 将其编码回来
  6. 您将整个新 JSON 保存到文件中,替换旧内容
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage