#php #mysql #json
#php #mysql #json
Вопрос:
У меня есть эта строка JSON:
$json = '{
"bigprodlist": {
"prods": [
{
"code": 55,
"name": "Comix Book",
"link": "weblink"
},
{
"code": 85,
"name": "IT Book",
"link": "weblink"
},
{
"code": 95,
"name": "Manga Book",
"link": "weblink"
}
}
}';
Я хотел бы распечатать каждую отдельную запись на веб-странице с использованием php, а затем сохранить эти записи в базе данных mysql.
В БД уже есть поля «код», «имя» и «ссылка»..
Это то, что я безуспешно пытался (для печати материала на странице):
$obj = json_decode($json,true);
echo ($obj["bigprodlist"]["prods"][0]["name"]);
Большое вам спасибо за помощь
Комментарии:
1. У вас есть непревзойденный «[» в вашей строке json.
2. sandbox.onlinephpfunctions.com/code/…
3. Хотите расширить свой вопрос? Вы упомянули MySQL.
4. Черт, я был так близко…..
Ответ №1:
Во-первых, исправьте пропущенную конечную скобку JSON, которая приводит к сбою декодирования JSON (добавьте ]
после данных prods ), затем расширьте свой оператор echo с помощью некоторых циклов foreach, чтобы распечатать данные. Это всего лишь простой пример, который поможет вам на правильном пути:
foreach ($obj["bigprodlist"]["prods"] as $p):
echo "<div>";
foreach ($p as $name=>$value):
echo "<span>".$name.": ".$value."</span>";
endforeach;
echo "</div>";
endforeach;
Затем вы можете использовать ту же процедуру цикла для получения данных в вашей БД.
Ответ №2:
Вам нужно использовать json_last_error(); http://no1.php.net/manual/en/function.json-last-error.php
Отладка:
$obj = json_decode($json,true);
var_dump($obj, json_last_error());
Вам не хватает ] :
$json = '{
"bigprodlist": {
"prods": [
{
"code": 55,
"name": "Comix Book",
"link": "weblink"
},
{
"code": 85,
"name": "IT Book",
"link": "weblink"
},
{
"code": 95,
"name": "Manga Book",
"link": "weblink"
}
] //missing!
}
}';
Ответ №3:
Где вы получили вывод json? Это недопустимо:
Parse error on line 18:
... } } }
----------------------^
Expecting ',', ']'
Проверьте свой json на http://jsonlint.com /