我正在制作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));
答案 0 :(得分:2)
您正在尝试访问json_decode生成的多维数组,就像它是一个对象一样。
替换此行
$data = json_decode($file, true);
用这个
$data = json_decode($file, false);
如果您希望结果是对象而不是多维数组。
另一方面,如果您对$ data是多维数组感到高兴,那么就像这样访问它
$data['charts']['songs'][] = array(
答案 1 :(得分:0)
尝试json_encode功能。 $data->charts[] = json_encode($_POST);