Intereting Posts
Управление кешем и истечение заголовка для PHP преобразовать mysql resultset в объект (имя, данные), который будет загружаться в HighCharts Вызов функции контроллера в другом контроллере в CodeIgniter Поиск MySQL от нескольких пользователей, предоставленных где предложение – исправление и лучший алгоритм Является ли аутентификация форм аутентификацией билетов с помощью PHP? Разделить слово camelCase на слова с php preg_match (регулярное выражение) Запросить запрос – MySQL и PHP Есть ли что-то вроде Dwoo-s {with} или {loop} в Smarty 3 или раньше? Как сделать Http Video Streaming PHP или сайт рефери, чтобы сделать это? удалить контроллер и имя функции из url-кода Ограничить доступ к файлам – только чтение через PHP Как я могу реализовать WS-Security 1.0 в PHP5 с использованием сертификатов? Silex: перенаправить администратор на админ-домашний путь после входа в систему Как безопасно отправлять баллы из приложения, которое использует только вход в facebook? PHP – Невозможно изменить информацию заголовка

JSON для PHP-массива с использованием file_get_contents

Я пытаюсь получить приведенный ниже 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); ?>