Я делаю веб-сервис 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, который я использую, - это
EDIT Добавлено больше кода, чтобы быть более полным
$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_decode, как если бы это был объект.
Заменить эту строку
$data = json_decode($file, true);
с этим
$data = json_decode($file, false);
если вы хотите, чтобы результат был объектом, а не многомерным массивом.
С другой стороны, если вы счастливы, что $ data - это многомерный массив, тогда обращайтесь к нему так
$data['charts']['songs'][] = array(
попробуйте функцию json_encode. $data->charts[] = json_encode($_POST);