Извините, если это было задано тысячу раз, но я не могу найти хороший учебник о том, как это сделать правильно, и поиск по стеку идет вверх по козырям.Получение данных JSON с PHP
У меня есть файл в формате JSON, который имеет данные, как это:
{
"store":"Store 1",
"cat":"Categories",
"general_cat":"Categories",
"spec_cat":"Accessories"
},
{
"store":"Store 1",
"cat":"Categories",
"general_cat":"Categories",
"spec_cat":"Accessories"
},
с около 50 записей в нем. Я пытаюсь разобрать эти данные и сохранить значения в переменных.
До сих пор я пытался:
$string = file_get_contents("jsonFile.json");
$json_array = json_decode($string,true);
foreach ($json_array as $key => $value){
$store = $key -> store;
$general_cat = $key -> general_cat;
$spec_cat = $key -> spec_cat;
if (!is_null($key -> mainImg_select)){
$cat = $key -> cat;
}
echo $headURL;
}
Это приводит к «Попытка получить свойство объекта, не являющихся» ошибок. Что я здесь делаю неправильно?
Первой, ваш код JSON не семантический правильно. Список объектов должен быть между '[' и ']' like '[{...}, {...}]'. Во-вторых, вы используете значение 'true' для второго параметра' json_decode'. Если для него установлено значение true, вы не будете манипулировать объектом, а ассоциативными массивами. Таким образом, '$ key-> store' не будет доступен. В то же время это может быть вместо $ value ["store"] '. – MatRt
JSON находится между квадратными скобками, я просто показывал, как хранятся данные.Я попытался установить второе значение json_decode в значение false, но это все равно дает мне ошибки, отличные от объекта. – Jascination
Это потому, что вам нужно использовать '$ value', а не' $ key'. Пожалуйста, полностью прочтите мой ответ. После 'json_decode',' $ json_array' представляет собой массив ассоциативных массивов. Таким образом, '$ key' является числовым индексом и' $ value' массивом, которым вы стремитесь манипулировать. – MatRt