За последние 24 часа нас посетили 22234 программиста и 1154 робота. Сейчас ищут 810 программистов ...

php json_decode не работает

Тема в разделе "Прочие вопросы по PHP", создана пользователем wer_wolf, 17 ноя 2011.

  1. wer_wolf

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

    С нами с:
    17 ноя 2011
    Сообщения:
    7
    Симпатии:
    0
    Помогите немогу понять где косяк есть два сайта на одном лежит база с которой работает скрипт на втором нужно получить и обработать данные от первого

    на сайте с базой текст такой


    Код (PHP):
    1. $r = sqlsrv_query($conn, $catl) or die("cannot get orders");
    2.     $tmp=array();
    3.     while($row = sqlsrv_fetch_array($r,SQLSRV_FETCH_ASSOC))
    4.         {
    5.         $tmp[]=$row;
    6.         }
    7.     $data['menu']=$tmp;    
    8.     }    
    9.   echo(json_encode($data));
    10.  
    на второй сайте


    Код (PHP):
    1.       $js=file_get_contents('http://my.com/a.php?id=1');
    2.                 print_r($js);
    3.       $i=json_decode($js, true);
    4.  
    5.       print_r($in);
    6.  
    7.                $c=$i['menu'];    
    8.       print_r($c); 

    при выполнении print_r($js) массив есть
    Код (PHP):
    1. {"menu":[{"ID":8,"Caption":"\u041a\u0423\u0417\u041e\u0412","Group":null},{"ID":2,"Caption":"\u0414\u0412\u0418\u0413\u0410\u0422\u0415\u041b\u042c","Group":null}]} 
    А вот print_r($i) уже пустой тоесть массив на сайт приходит, а вот json_decode возвращает пустую строку, print_r($c) конечно тоже пустой.

    Помогите куда смотреть?

    PHP, JavaScript, SQL и другой код пишите внутри тегов
    Код ( (Unknown Language)):
    1. [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
     
  2. Gromo

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

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    wer_wolf
    смотреть в сторону phpinfo() - выводит информацию о настройках, включая опцию поддерживается ли json_decode.
    версия пхп до 5.2 не имеет встроенной функций работы с json

    посмотри вот сюда http://www.php.net/manual/en/function.j ... php#105259 - довольно много примеров самописных json декодеров. И ещё советую в гугле покопаться - тоже немало вылезет.
     
  3. wer_wolf

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

    С нами с:
    17 ноя 2011
    Сообщения:
    7
    Симпатии:
    0
    Не мой случай на этих же сайтах уже пашут скрипты в которых примерна такая же конструкцию пашет

    а phpinfo говорит

    PHP Version 5.2.17
    jsonjson support enabled
    json version 1.2.1
     
  4. wer_wolf

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

    С нами с:
    17 ноя 2011
    Сообщения:
    7
    Симпатии:
    0
    Проверил если насильно пишнуть в код вот такую конструкцию

    json_decode ("{\"menu\":[{\"OID\":841,\"Caption\":\"\u041a\u0423\u0417\u041e\u0412\",\"ParentGroup\":null},{\"OID\":842,\"Caption\":\"\u0414\u0412\u0418\u0413\u0410\u0422\u0415\u041b\u042c\",\"ParentGroup\":null}]}", true);

    то она легко разберается на массив как я и хотел но блин в чем отлие понять не могу
     
  5. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    есличо, json_decode только с utf-8 работает
     
  6. wer_wolf

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

    С нами с:
    17 ноя 2011
    Сообщения:
    7
    Симпатии:
    0
    ну это вроде бы и есть utf-8 dj всяком случае из sql выбираю указываю что хочу именно utf-8
     
  7. wer_wolf

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

    С нами с:
    17 ноя 2011
    Сообщения:
    7
    Симпатии:
    0
    Прикол взял файл который до меня писали с работающими функциями json_decode частично удалил с него частично покоментил часть удалил и скопировал туда все из файла который я писал и у меня он не работал и все заработало вот теперь сижу и думаю что это такое?
     
  8. Михаил

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

    С нами с:
    12 июл 2009
    Сообщения:
    545
    Симпатии:
    0
    Адрес:
    Bielarus
    я просто думаю дело в валидации jsonа, такие дела. только тогда декодирование будет в нуль.
     
  9. formalinbb

    formalinbb Новичок

    С нами с:
    28 июл 2015
    Сообщения:
    1
    Симпатии:
    0
    Написано:
    $i=json_decode($js, true);
    print_r($in);
    но скорее всего надо было:
    $i=json_decode($js, true);
    print_r($i);
     
  10. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.155
    Симпатии:
    1.769
    Адрес:
    :сердА
    Бро, 4 года прошло. Проблема давно решена, либо автор вообще ушел в макдональдс. Не некропости)
     
  11. Sandulf

    Sandulf Новичок

    С нами с:
    11 дек 2016
    Сообщения:
    8
    Симпатии:
    1
    Этот топик в числе первых в выдаче гугл по данному вопросу, потому решил написать решение для всех, кто столкнется с этой проблемой. Надо делать так:
    Код (Text):
    1. $data = json_decode(htmlspecialchars_decode($_POST['data']),true);
     
  12. AntonyMan

    AntonyMan Новичок

    С нами с:
    25 май 2019
    Сообщения:
    1
    Симпатии:
    0
    Ну вот считай не зря 5 лет назад ответил человеку, который спросил 8 лет назад. Я даже не поленился зарегистрироваться, чтобы спасибо сказать! Спасибо, друг!
     
  13. IamUserPHP

    IamUserPHP Новичок

    С нами с:
    26 июн 2019
    Сообщения:
    1
    Симпатии:
    0
    1. $data = json_decode(htmlspecialchars_decode($_POST['data']),true);
    И мне помог данный ответ. Спасибо, друг!