Я пытаюсь получить приведенный ниже json-контент, используя журнал api. Результат json такой. Я хочу, чтобы ниже json преобразовывался в php-массив.
{ "bpath": "http://www.sampledomain.com/", "clist": [ { "cid": "11", "display_type": "grid", "ctitle": "abc", "acount": "71", "alist": [ { "aid": "6865", "adate": "2 Hours ago", "atitle": "test", "adesc": "test desc", "aimg": "", "aurl": "?nid=6865", "weburl": "news.php?nid=6865", "cmtcount": "0" }, { "aid": "6857", "adate": "20 Hours ago", "atitle": "test1", "adesc": "test desc1", "aimg": "", "aurl": "?nid=6857", "weburl": "news.php?nid=6857", "cmtcount": "0" } ] }, { "cid": "1", "display_type": "grid", "ctitle": "test1", "acount": "2354", "alist": [ { "aid": "6851", "adate": "1 Days ago", "atitle": "test123", "adesc": "test123 desc", "aimg": "", "aurl": "?nid=6851", "weburl": "news.php?nid=6851", "cmtcount": "7" }, { "aid": "6847", "adate": "2 Days ago", "atitle": "test12345", "adesc": "test12345 desc", "aimg": "", "aurl": "?nid=6847", "weburl": "news.php?nid=6847", "cmtcount": "7" } ] }, ] }
Мой код выглядит так.
<?php $json_url = "http://api.testmagazine.com/test.php?type=menu"; $json = file_get_contents($json_url); $data = json_decode($json, TRUE); echo "<pre>"; print_r($data); echo "</pre>"; ?>
Вышеприведенный код возвращает пустой массив. 🙁 Как можно преобразовать вышеуказанный JSON в массив объектов php. Я беспомощен.
Спасибо, Haan
Выбранный образец JSON недействителен. Проверьте это онлайн с помощью этого JSON Validator http://jsonlint.com/ . Вам нужно удалить дополнительную запятую в строке 59.
У вас есть действительный json, вы можете использовать этот код для преобразования его в массив.
json_decode ($ json, true);
Array ( [bpath] => http://www.sampledomain.com/ [clist] => Array ( [0] => Array ( [cid] => 11 [display_type] => grid [ctitle] => abc [acount] => 71 [alist] => Array ( [0] => Array ( [aid] => 6865 [adate] => 2 Hours ago [atitle] => test [adesc] => test desc [aimg] => [aurl] => ?nid=6865 [weburl] => news.php?nid=6865 [cmtcount] => 0 ) [1] => Array ( [aid] => 6857 [adate] => 20 Hours ago [atitle] => test1 [adesc] => test desc1 [aimg] => [aurl] => ?nid=6857 [weburl] => news.php?nid=6857 [cmtcount] => 0 ) ) ) [1] => Array ( [cid] => 1 [display_type] => grid [ctitle] => test1 [acount] => 2354 [alist] => Array ( [0] => Array ( [aid] => 6851 [adate] => 1 Days ago [atitle] => test123 [adesc] => test123 desc [aimg] => [aurl] => ?nid=6851 [weburl] => news.php?nid=6851 [cmtcount] => 7 ) [1] => Array ( [aid] => 6847 [adate] => 2 Days ago [atitle] => test12345 [adesc] => test12345 desc [aimg] => [aurl] => ?nid=6847 [weburl] => news.php?nid=6847 [cmtcount] => 7 ) ) ) ) )
Вы JSON не являются допустимой строкой, как сказал вам выше.
и вот решение для него.
<?php $json_url = "http://api.testmagazine.com/test.php?type=menu"; $json = file_get_contents($json_url); $json=str_replace('}, ]',"} ]",$json); $data = json_decode($json); echo "<pre>"; print_r($data); echo "</pre>"; ?>
Используйте этот код, он будет работать для вас.
Проверьте некоторые опечатки ','
<?php //file_get_content(url); $jsonD = '{ "bpath":"http://www.sampledomain.com/", "clist":[{ "cid":"11", "display_type":"grid", "ctitle":"abc", "acount":"71", "alist":[{ "aid":"6865", "adate":"2 Hours ago", "atitle":"test", "adesc":"test desc", "aimg":"", "aurl":"?nid=6865", "weburl":"news.php?nid=6865", "cmtcount":"0" }, { "aid":"6857", "adate":"20 Hours ago", "atitle":"test1", "adesc":"test desc1", "aimg":"", "aurl":"?nid=6857", "weburl":"news.php?nid=6857", "cmtcount":"0" } ] }, { "cid":"1", "display_type":"grid", "ctitle":"test1", "acount":"2354", "alist":[{ "aid":"6851", "adate":"1 Days ago", "atitle":"test123", "adesc":"test123 desc", "aimg":"", "aurl":"?nid=6851", "weburl":"news.php?nid=6851", "cmtcount":"7" }, { "aid":"6847", "adate":"2 Days ago", "atitle":"test12345", "adesc":"test12345 desc", "aimg":"", "aurl":"?nid=6847", "weburl":"news.php?nid=6847", "cmtcount":"7" } ] } ] } '; $parseJ = json_decode($jsonD,true); print_r($parseJ); ?>