За последние 24 часа нас посетили 20939 программистов и 1106 роботов. Сейчас ищут 438 программистов ...

Не могу прочесть json

Тема в разделе "Решения, алгоритмы", создана пользователем DJTIMOHA, 10 ноя 2018.

  1. DJTIMOHA

    DJTIMOHA Активный пользователь

    С нами с:
    5 апр 2015
    Сообщения:
    109
    Симпатии:
    2
    Есть файл file.php
    Код (Text):
    1. {"icestats":{"admin":"admin[]site,"host":"site","location":"PLANETA ZEMLYA","server_id":"Icecast 2.4.0","server_start":"Thu, 08 Nov 2018 23:02:31 +0200","server_start_iso8601":"2018-11-08T23:02:31+0200","source":[{"bitrate":96,"genre":"1PVK.RU","listener_peak":0,"listeners":0,"listenurl":"http://flashnet.dn.ua:8000/rap","server_description":"Unspecified description","server_name":"Radio 1PVK","server_type":"audio/mpeg","server_url":"http://www.1pvk.ru","stream_start":"Sat, 10 Nov 2018 22:31:05 +0200","stream_start_iso8601":"2018-11-10T22:31:05+0200","title":"Nekiy Zames - Äíî(Gun Mic Studio)",,{"bitrate":128,"genre":"1PVK.RU","listener_peak":1,"listeners":0,"listenurl":"http://flashnet.dn.ua:8000/tap","server_description":"Unspecified description","server_name":"Radio 1PVK","server_type":"audio/mpeg","server_url":"http://www.1pvk.ru","stream_start":"Sat, 10 Nov 2018 20:52:05 +0200","stream_start_iso8601":"2018-11-10T20:52:05+0200","title":"Athom & Josa - Nebula (Extended Mix)",]}}
    Пытаюсь из него получить title
    Код (Text):
    1. $status = file_get_contents("file.php");
    2. //$status = json_decode($status);
    3. $track = $status->icestats->source;
    4. echo ''.$track->title.'';
    Пусто, что не так пишу?
     
  2. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.734
    Симпатии:
    1.315
    Адрес:
    Лень
    json syntax err
    Код (Text):
    1.  
    2. $a = '{
    3.    "icestats":{
    4.      "admin":"admin[]site",
    5.      "host":"site",
    6.      "location":"PLANETA ZEMLYA",
    7.      "server_id":"Icecast 2.4.0",
    8.      "server_start":"Thu, 08 Nov 2018 23:02:31 +0200",
    9.      "server_start_iso8601":"2018-11-08T23:02:31+0200",
    10.      "source":[
    11.      {
    12.        "bitrate":96,
    13.        "genre":"1PVK.RU",
    14.        "listener_peak":0,
    15.        "listeners":0,
    16.        "listenurl":"http://flashnet.dn.ua:8000/rap",
    17.        "server_description":"Unspecified description",
    18.        "server_name":"Radio 1PVK",
    19.        "server_type":"audio/mpeg",
    20.        "server_url":"http://www.1pvk.ru",
    21.        "stream_start":"Sat, 10 Nov 2018 22:31:05 +0200",
    22.        "stream_start_iso8601":"2018-11-10T22:31:05+0200",
    23.        "title":"Nekiy Zames - Äíî(Gun Mic Studio)",,{
    24.          "bitrate":128,
    25.          "genre":"1PVK.RU",
    26.          "listener_peak":1,
    27.          "listeners":0,
    28.          "listenurl":"http://flashnet.dn.ua:8000/tap",
    29.          "server_description":"Unspecified description",
    30.          "server_name":"Radio 1PVK",
    31.          "server_type":"audio/mpeg",
    32.          "server_url":"http://www.1pvk.ru",
    33.          "stream_start":"Sat, 10 Nov 2018 20:52:05 +0200",
    34.          "stream_start_iso8601":"2018-11-10T20:52:05+0200",
    35.          "title":"Athom & Josa - Nebula (Extended Mix)",]}}';
     
  3. DJTIMOHA

    DJTIMOHA Активный пользователь

    С нами с:
    5 апр 2015
    Сообщения:
    109
    Симпатии:
    2
    это всмысле ошибка json?
     
  4. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.734
    Симпатии:
    1.315
    Адрес:
    Лень
    Я причину написал
     
  5. DJTIMOHA

    DJTIMOHA Активный пользователь

    С нами с:
    5 апр 2015
    Сообщения:
    109
    Симпатии:
    2
    Я новичок в пхп, не пойму что к чему. Как заставить получать теги из файла?
     
  6. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.734
    Симпатии:
    1.315
    Адрес:
    Лень
    починить json syntax
     
  7. DJTIMOHA

    DJTIMOHA Активный пользователь

    С нами с:
    5 апр 2015
    Сообщения:
    109
    Симпатии:
    2
    Вот сейчас правильно всё должно быть, на в ответ пустой экран(

    Код (Text):
    1. {"icestats":{"admin":"admin[]flashnet[]dn[]ua","host":"flashnet.dn.ua","location":"PLANETA ZEMLYA","server_id":"Icecast 2.4.0","server_start":"Thu, 08 Nov 2018 23:02:31 +0200","server_start_iso8601":"2018-11-08T23:02:31+0200","source":[{"audio_info":"bitrate=192","bitrate":192,"genre":"Various","listener_peak":1,"listeners":0,"listenurl":"http://flashnet.dn.ua:8000/mb_128","server_description":"RADIO XXI","server_name":"MUSICBOOM","server_type":"audio/mpeg","server_url":"http://musicboom.org:8000/mb_128","stream_start":"Sun, 11 Nov 2018 04:00:01 +0200","stream_start_iso8601":"2018-11-11T04:00:01+0200","title":"Tujamo - Booty Bounce","dummy":null},{"audio_info":"bitrate=256","bitrate":256,"genre":"Various","listener_peak":0,"listeners":0,"listenurl":"http://flashnet.dn.ua:8000/mb_160","server_description":"RADIO XXI","server_name":"MUSICBOOM","server_type":"audio/mpeg","server_url":"http://musicboom.org:8000/mb_160","stream_start":"Sun, 11 Nov 2018 04:00:01 +0200","stream_start_iso8601":"2018-11-11T04:00:01+0200","title":"Tujamo - Booty Bounce","dummy":null},{"audio_info":"bitrate=96","bitrate":96,"genre":"Various","listener_peak":0,"listeners":0,"listenurl":"http://flashnet.dn.ua:8000/mb_48","server_description":"RADIO XXI","server_name":"MUSICBOOM","server_type":"audio/mpeg","server_url":"http://musicboom.org:8000/mb_48","stream_start":"Sun, 11 Nov 2018 04:00:01 +0200","stream_start_iso8601":"2018-11-11T04:00:01+0200","title":"Tujamo - Booty Bounce","dummy":null},{"audio_info":"ice-samplerate=44100;ice-bitrate=192;ice-channels=2","bitrate":192,"genre":"Various","ice-bitrate":192,"ice-channels":2,"ice-samplerate":44100,"listener_peak":9,"listeners":2,"listenurl":"http://flashnet.dn.ua:8000/musicboom128","server_description":"Unspecified description","server_name":"Unspecified name","server_type":"audio/mpeg","stream_start":"Thu, 08 Nov 2018 23:02:44 +0200","stream_start_iso8601":"2018-11-08T23:02:44+0200","title":"Sick Individuals - Drive (HARDWELL EXCLUSIVE)","dummy":null},{"audio_info":"ice-samplerate=44100;ice-bitrate=256;ice-channels=2","bitrate":256,"genre":"Various","ice-bitrate":256,"ice-channels":2,"ice-samplerate":44100,"listener_peak":12,"listeners":3,"listenurl":"http://flashnet.dn.ua:8000/musicboom160","server_description":"Unspecified description","server_name":"Unspecified name","server_type":"audio/mpeg","stream_start":"Thu, 08 Nov 2018 23:02:44 +0200","stream_start_iso8601":"2018-11-08T23:02:44+0200","title":"Sick Individuals - Drive (HARDWELL EXCLUSIVE)","dummy":null},{"audio_info":"ice-samplerate=44100;ice-bitrate=96;ice-channels=2","bitrate":96,"genre":"Various","ice-bitrate":96,"ice-channels":2,"ice-samplerate":44100,"listener_peak":7,"listeners":1,"listenurl":"http://flashnet.dn.ua:8000/musicboom48","server_description":"Unspecified description","server_name":"Unspecified name","server_type":"audio/mpeg","stream_start":"Thu, 08 Nov 2018 23:02:44 +0200","stream_start_iso8601":"2018-11-08T23:02:44+0200","title":"Sick Individuals - Drive (HARDWELL EXCLUSIVE)","dummy":null},{"bitrate":96,"genre":"1PVK.RU","listener_peak":0,"listeners":0,"listenurl":"http://flashnet.dn.ua:8000/rap","server_description":"Unspecified description","server_name":"Radio 1PVK","server_type":"audio/mpeg","server_url":"http://www.1pvk.ru","stream_start":"Sun, 11 Nov 2018 19:14:40 +0200","stream_start_iso8601":"2018-11-11T19:14:40+0200","title":"Albina tea - Íå íðàâëþñü",,{"bitrate":128,"genre":"1PVK.RU","listener_peak":1,"listeners":0,"listenurl":"http://flashnet.dn.ua:8000/tap","server_description":"Unspecified description","server_name":"Radio 1PVK","server_type":"audio/mpeg","server_url":"http://www.1pvk.ru","stream_start":"Sun, 11 Nov 2018 19:14:45 +0200","stream_start_iso8601":"2018-11-11T19:14:45+0200","title":"Myo - Horurock (Sak Remix)",]}}
     
  8. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.734
    Симпатии:
    1.315
    Адрес:
    Лень
    PHP:
    1. $jd = json_decode ( $a );
    2.  
    3. switch ( json_last_error () )
    4. {
    5.     case JSON_ERROR_NONE:
    6.         echo ' - Ошибок нет';
    7.     break;
    8.     case JSON_ERROR_DEPTH:
    9.         echo ' - Достигнута максимальная глубина стека';
    10.     break;
    11.     case JSON_ERROR_STATE_MISMATCH:
    12.         echo ' - Некорректные разряды или несоответствие режимов';
    13.     break;
    14.     case JSON_ERROR_CTRL_CHAR:
    15.         echo ' - Некорректный управляющий символ';
    16.     break;
    17.     case JSON_ERROR_SYNTAX:
    18.         echo ' - Синтаксическая ошибка, некорректный JSON';
    19.     break;
    20.     case JSON_ERROR_UTF8:
    21.         echo ' - Некорректные символы UTF-8, возможно неверно закодирован';
    22.     break;
    23.     default:
    24.         echo ' - Неизвестная ошибка';
    25.     break;
    26. }
    27.  
    28. print_r ( $jd );
     
  9. DJTIMOHA

    DJTIMOHA Активный пользователь

    С нами с:
    5 апр 2015
    Сообщения:
    109
    Симпатии:
    2
    Да я понял что ошибка в jsob.
    Ну тогда есть такой файл file.xsl:

    Код (Text):
    1. {"/tap":
    2.       {
    3.       "name" : "Radio 1PVK",
    4.       "listeners" : "0",
    5.       "description" : "Unspecified description",
    6.       "title" : "Axwell & Ingrosso - More Than You Know (Older Grand Remix)",
    7.       "genre" : "1PVK.RU",
    8.       "url" : "http://www.1pvk.ru"
    9. }
    10. }
    Как в нём получить из него title при помощи php?
     
  10. MRSgiba

    MRSgiba Активный пользователь

    С нами с:
    22 дек 2017
    Сообщения:
    200
    Симпатии:
    32
    Код (Text):
    1. <?php
    2. $text_json = '{"/tap":
    3.       {
    4.       "name" : "Radio 1PVK",
    5.       "listeners" : "0",
    6.       "description" : "Unspecified description",
    7.       "title" : "Axwell & Ingrosso - More Than You Know (Older Grand Remix)",
    8.       "genre" : "1PVK.RU",
    9.       "url" : "http://www.1pvk.ru"
    10. }
    11. }';
    12.  
    13. print_r(json_decode($text_json)->{"/tap"}->title);
    14. ?>
    Можно вот так @DJTIMOHA. Ссылочка - прям для вашего случая
     
    #10 MRSgiba, 12 ноя 2018
    Последнее редактирование: 12 ноя 2018
  11. DJTIMOHA

    DJTIMOHA Активный пользователь

    С нами с:
    5 апр 2015
    Сообщения:
    109
    Симпатии:
    2
    Дак я из файла беру, не с переменной $text_json
     
  12. MRSgiba

    MRSgiba Активный пользователь

    С нами с:
    22 дек 2017
    Сообщения:
    200
    Симпатии:
    32
    @DJTIMOHA А ты из файла в переменную передать не можешь, или нужно написать как брать из файла???
     
  13. DJTIMOHA

    DJTIMOHA Активный пользователь

    С нами с:
    5 апр 2015
    Сообщения:
    109
    Симпатии:
    2
    Код (Text):
    1. $status = file_get_contents("http://site.ru:8000/status-json.xsl"");
    2. print_r(json_decode($status)->{"/tap"}->title);
    Выдаёт таймаут
     
  14. MRSgiba

    MRSgiba Активный пользователь

    С нами с:
    22 дек 2017
    Сообщения:
    200
    Симпатии:
    32
    Ну скачай его CURL-ом
     
  15. DJTIMOHA

    DJTIMOHA Активный пользователь

    С нами с:
    5 апр 2015
    Сообщения:
    109
    Симпатии:
    2
    А можно код написать? Для меня это действительно тёмный лес. Новичок в пхп
     
  16. MRSgiba

    MRSgiba Активный пользователь

    С нами с:
    22 дек 2017
    Сообщения:
    200
    Симпатии:
    32
  17. DJTIMOHA

    DJTIMOHA Активный пользователь

    С нами с:
    5 апр 2015
    Сообщения:
    109
    Симпатии:
    2
    опечатка )))
     
  18. MRSgiba

    MRSgiba Активный пользователь

    С нами с:
    22 дек 2017
    Сообщения:
    200
    Симпатии:
    32
    Ну так поправь и попробуй, ты вообще страницу эту в браузере открыть можешь???
     
  19. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.989
    Симпатии:
    759
    PHP:
    1. $status = curlCall("http://site.ru:8000/status-json.xsl");
    2.  
    3. function curlCall($url){
    4.     $curl = curl_init($url);
    5.     curl_setopt($curl, CURLOPT_HEADER, false);
    6.     curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    7.     $response = curl_exec($curl);
    8.     curl_close($curl);
    9.  
    10.     return $response;
    11. }
     
  20. MRSgiba

    MRSgiba Активный пользователь

    С нами с:
    22 дек 2017
    Сообщения:
    200
    Симпатии:
    32
    Ну и соответственно ссылка,к предыдущему посту @TeslaFeo. Нажимаешь на строку простой пример и получаешь все, только сам
     
  21. DJTIMOHA

    DJTIMOHA Активный пользователь

    С нами с:
    5 апр 2015
    Сообщения:
    109
    Симпатии:
    2
    А получать echo $response; ?
     
  22. MRSgiba

    MRSgiba Активный пользователь

    С нами с:
    22 дек 2017
    Сообщения:
    200
    Симпатии:
    32
    Нет, print_r(json_decode($status)->{"/tap"}->title); Или echo, как тебе угодно, лишь бы там строка была а не массив, а то еще на полчаса
     
  23. DJTIMOHA

    DJTIMOHA Активный пользователь

    С нами с:
    5 апр 2015
    Сообщения:
    109
    Симпатии:
    2
    print_r(json_decode($status)->{"/tap"}->title)
    Или $response?
     
  24. MRSgiba

    MRSgiba Активный пользователь

    С нами с:
    22 дек 2017
    Сообщения:
    200
    Симпатии:
    32
    $status= curlCall("http://site.ru:8000/status-json.xsl"); Говорит о том, что ты передал все в эту переменную, с помощью функции curlCall, и данные лежат в ней; $response у тебя существует только внутри вышеописанной функции
     
  25. DJTIMOHA

    DJTIMOHA Активный пользователь

    С нами с:
    5 апр 2015
    Сообщения:
    109
    Симпатии:
    2
    Код (Text):
    1. $status = curlCall("http://site.ru:8000/status-json.xsl");
    2. function curlCall($url){
    3.     $curl = curl_init($url);
    4.     curl_setopt($curl, CURLOPT_HEADER, false);
    5.     curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    6.     $response = curl_exec($curl);
    7.     curl_close($curl);
    8.     return $response;
    9. }
    10.  
    11. print_r (json_decode($status)->{"/tap"}->title);
    Так правильно?