Rumah  >  Soal Jawab  >  teks badan

json_decode mengembalikan null selepas menyimpan 2 tatasusunan dalam fail .json - pengesahan

Saya ada soalan tentang menggunakan PHP dengan JSON.

Saya menggunakan tatasusunan untuk menyimpan di dalam fail .json. Tatasusunan yang mengandungi data berasal dari index.php saya dan dihuni oleh pengguna, setakat ini baik. Semuanya disimpan dalam .json dan apabila saya mempunyai lebih daripada 1 pengguna yang menyimpan kandungan di dalamnya (bermakna terdapat 2 tatasusunan dalam fail .json), ia tidak mengembalikan data tetapi mengembalikan NULL. Adakah saya kehilangan sesuatu tentang menyimpan atau membaca fail JSON? Saya mendapati bahawa JSON saya tidak sah, ia menunjukkan kepada saya "elemen JSON berbilang akar" di dalam pengesah.

Ini adalah kod saya untuk menulis dan membaca .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);
    }

Fail JSON saya kelihatan seperti ini (2 tatasusunan diisi):

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

Di sinilah saya mengisi tatasusunan dan kemudian menghantarnya ke kaedah JSONwrite (ini berada di dalam gelung foreach):

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

    }

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

Adakah terdapat cara untuk mengesahkannya seperti ini supaya penyahkodan tidak mengembalikan nol?

P粉333395496P粉333395496219 hari yang lalu356

membalas semua(1)saya akan balas

  • P粉724256860

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

    Suatu tatasusunan di bawah tatasusunan lain ialah JSON tidak sah. Anda harus menggunakan tatasusunan akar dan memastikan pengguna anda berada di dalamnya (tidak pasti sama ada perkara dalam tatasusunan itu masuk akal, tetapi anda mendapat idea itu):

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

    Dalam erti kata lain, ia sepatutnya kelihatan seperti ini:

    1. Pengguna menghantar borang
    2. Anda telah membaca kandungan fail
    3. Anda boleh menyahkodnya menggunakan json_decode()
    4. Anda menambah pada tatasusunan
    5. Anda boleh mengekod semula menggunakan json_encode()
    6. Anda menyimpan keseluruhan JSON baharu pada fail, menggantikan kandungan lama

    balas
    0
  • Batalbalas