Heim > Fragen und Antworten > Hauptteil
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粉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}] ]
换句话说,应该如下所示:
json_decode()
对其进行解码json_encode()
将其编码回来