首页  >  问答  >  正文

json_decode 在 .json 文件中存储 2 个数组后返回 null - 验证

我有一个关于 PHP 与 JSON 结合使用的问题。

我使用数组来存储 .json 文件内部。包含数据的数组来自我的index.php,并由用户填充,到目前为止一切顺利。所有内容都保存在 .json 中,当我有超过 1 个用户在其中存储内容时(意味着 .json 文件中有 2 个数组),它不会返回数据,而是返回 NULL。我是否遗漏了有关保存或读取 JSON 文件的内容?我发现我的 JSON 无效,它在验证器内向我显示“多个根 JSON 元素”。

这是我编写和读取 .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);
    }

我的 JSON 文件看起来像这样(填充了 2 个数组):

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

这是我填充数组的地方,然后将其传递给 JSONwrite 方法(这是在 foreach 循环内):

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

    }

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

有没有一种方法可以像这样验证它,这样解码就不会返回 null?

P粉333395496P粉333395496218 天前353

全部回复(1)我来回复

  • 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 保存到文件中,替换旧内容

    回复
    0
  • 取消回复