Heim  >  Fragen und Antworten  >  Hauptteil

json_decode gibt null zurück, nachdem zwei Arrays in der .json-Datei gespeichert wurden – Validierung

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粉333395496P粉333395496268 Tage vor396

Antworte allen(1)Ich werde antworten

  • P粉724256860

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

    一个数组下的另一个数组是无效的 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 保存到文件中,替换旧内容

    Antwort
    0
  • StornierenAntwort