向 json 添加数据

Adding data to json

我正在制作 RESTful 网络服务,我想将数据添加到 JSON 文件。我现在收到错误和警告,但我无法弄清楚我遗漏了什么或做错了什么。

JSON 文件如下所示

    {
    "charts": {
        "title": "Top 40",
        "song": {
            "id":"1",
            "title": "Title",
            "artist": "Name" ,
            "genre": "Something",
            "weeks": "4",
            "highest_rating": "18",
            "year": "2014",
            "youtube": "link here"
        }
    }
}

我想在添加数据时得到这样的东西

 {
        "charts": {
            "title": "Top 40",
            "song": {
                "id":"1",
                "title": "Title",
                "artist": "Name" ,
                "genre": "Something",
                "weeks": "4",
                "highest_rating": "18",
                "year": "2014",
                "youtube": "link here"
                }
               {
                "id":"2",
                "title": "Title",
                "artist": "Name" ,
                "genre": "Something",
                "weeks": "4",
                "highest_rating": "18",
                "year": "2014",
                "youtube": "link here"
            }
        }
    }

我使用的PHP代码是这样的

编辑添加了更多代码以更加完整

$file = file_get_contents("data.json");
    $data = json_decode($file, true);

    $data->charts->songs[] = array(
        'id'=>$_POST["id"],
        'title'=>$_POST["title"],
        'artist'=>$_POST["artist"],
        'genre'=>$_POST["genre"],
        'week'=>$_POST["week"],
        'highest_rating'=>$_POST["highest_rating"],
        'year'=>$_POST["year"],
        'youtube'=>$_POST["youtube"]
    );

    file_put_contents('data.json',json_encode($data));

尝试json_encode功能。 $data->charts[] = json_encode($_POST);

您正在尝试访问由 json_decode 生成的多维数组,就像它是一个对象一样。

替换此行

$data = json_decode($file, true);

有了这个

$data = json_decode($file, false);

如果您希望结果是对象而不是多维数组。

另一方面,如果您对 $data 是一个多维数组感到满意,那么可以像这样访问它

$data['charts']['songs'][] = array(

http://php.net/manual/en/function.json-decode.php