За последние 24 часа нас посетил 23371 программист и 1665 роботов. Сейчас ищут 817 программистов ...

И снова вопрос по JSON будь он не ладен!

Тема в разделе "PHP для новичков", создана пользователем etalcom, 11 фев 2013.

  1. etalcom

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

    С нами с:
    14 мар 2012
    Сообщения:
    86
    Симпатии:
    0
    Адрес:
    Вологда
    Код (Text):
    1.  
    2. {"STATUS":"OK","DATA":[{"tovar_id":"20100922143336949660000558362997","nameRus":"ремень ГРМ Niss Micra 1.0 -K10 89-92","manuf_descr":"GATES","tovar_code":"5288"},{"tovar_id":"20100929153647397444000571464218","nameRus":"опора шаровая нижн. D=38,3мм K=18мм Logan","manuf_descr":"SIDEM","tovar_code":"5288"},{"tovar_id":"20110301130717396482000959720608","nameRus":"Генератор","manuf_descr":"SPIDAN","tovar_code":"5288"},{"tovar_id":"20110317171144719709001005935896","nameRus":"часть глуш.","manuf_descr":"ATOY OY","tovar_code":"5288"},{"tovar_id":"20110804174637902456000402566545","nameRus":"Тормозной диск","manuf_descr":"PILENGA","tovar_code":"5288"}]}
    есть вот такой ответ от сервера!
    Блин делаю обработку его не чего не выходит дохожу до простых проверок на вывод хотябы:
    Получается только так!
    Код (Text):
    1.  
    2. $kol = iconv("windows-1251", "UTF-8", $content);
    3.     $ab = json_decode($kol);
    4.     print_r($ab);
    И выводит только так
    Код (Text):
    1.  
    2. stdClass Object ( [STATUS] => OK [DATA] => Array ( [0] => stdClass Object ( [tovar_id] => 20100922143336949660000558362997 [nameRus] => ремень ГРМ Niss Micra 1.0 -K10 89-92 [manuf_descr] => GATES [tovar_code] => 5288 ) [1] => stdClass Object ( [tovar_id] => 20100929153647397444000571464218 [nameRus] => опора шаровая нижн. D=38,3мм K=18мм Logan [manuf_descr] => SIDEM [tovar_code] => 5288 ) [2] => stdClass Object ( [tovar_id] => 20110301130717396482000959720608 [nameRus] => Генератор [manuf_descr] => SPIDAN [tovar_code] => 5288 ) [3] => stdClass Object ( [tovar_id] => 20110317171144719709001005935896 [nameRus] => часть глуш. [manuf_descr] => ATOY OY [tovar_code] => 5288 ) [4] => stdClass Object ( [tovar_id] => 20110804174637902456000402566545 [nameRus] => Тормозной диск [manuf_descr] => PILENGA [tovar_code] => 5288 ) ) )
    Но это даже не в этом вопрос!
    Я не могу допереть как мне уже такие вот полученные данные которые прошли djson_decode
    Засунуть в таблицу!
    как я понимаю тут какая то вложенность, так как смотрел через онлайн конверторы
    Но и тут еще какая то фигня насколько я икал уже по этому вопросу ответы в гугл
    Есть еще проблема когда появляются во вложенности ковычки двойные!

    Вообщем люди добрые прошу от Вас как всегда помощи!
    Сам стараюсь иногда тоже их давать по мере своего ума)))
     
  2. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Код (Text):
    1. json_decode($kol, 1);
    и уже будет массив, а не объект
     
  3. etalcom

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

    С нами с:
    14 мар 2012
    Сообщения:
    86
    Симпатии:
    0
    Адрес:
    Вологда
    Дак мне то нужны поля в таблицу
    Допустим
    [tovar_id] - и пошли строчки
    следующий столбец
    [manuf_descr] итд
    вот мне не понятно!
    Я в массив то перегонял все это!
    Но как потом по нему то идти!
     
  4. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    В мануал трудно заглянуть?
    Там показывается прямо как и что.

    Код (PHP):
    1. $json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
    2. var_dump(json_decode($json, true)); 
    Код (PHP):
    1. object(stdClass)#1 (5) {
    2.     ["a"] => int(1)
    3.     ["b"] => int(2)
    4.     ["c"] => int(3)
    5.     ["d"] => int(4)
    6.     ["e"] => int(5)
    7. }
    8.  
    9. array(5) {
    10.     ["a"] => int(1)
    11.     ["b"] => int(2)
    12.     ["c"] => int(3)
    13.     ["d"] => int(4)
    14.     ["e"] => int(5)
    15. } 
    [vs] второй параметр относится к boolean, а не к целым числам, но факт он преобразует, но лучше конечно писать:
    json_decode($kol, true);
     
  5. etalcom

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

    С нами с:
    14 мар 2012
    Сообщения:
    86
    Симпатии:
    0
    Адрес:
    Вологда
    Код (Text):
    1.  
    2.     $kol1 = iconv("windows-1251", "UTF-8", $content);
    3.     $ab = json_decode($kol1, true);
    4.     //var_dump(json_decode($kol1));
    5.     //var_dump(json_decode($kol1, true));
    6.     //print_r($ab);
    7.             foreach ($ab as $i)
    8.             {
    9.                 echo $i->STATUS."<br>";
    10.             }
    Почему вот этот кусок кода не работает?
     
  6. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    Включи вывод ошибок. Не должно быть у тебя вопросов про такую фигню.
     
  7. etalcom

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

    С нами с:
    14 мар 2012
    Сообщения:
    86
    Симпатии:
    0
    Адрес:
    Вологда
    Просто я с JSON сталкиваюсь второй раз в первый я разобрался опять же с помощью наших пользователей.
    А этот json отличается от того с которым я столкнулся в первый раз!
    Отличия вот в этом и мне кажется что именно из за этого я стою на месте
    {"STATUS":"OK","DATA":

    Добавлено спустя 10 минут 37 секунд:
    Можете пожалуйста написать как вывести из этого json параметры например [manuf_descr]
     
  8. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    Включи вывод ошибок!

    Будет написано в чем ошибка. Мы то и так видим, но ты должен чему-то научиться сам.
     
  9. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Код (PHP):
    1. $json='{"STATUS":"OK","DATA":[{"tovar_id":"20100922143336949660000558362997","nameRus":"ремень ГРМ Niss Micra 1.0 -K10 89-92","manuf_descr":"GATES","tovar_code":"5288"},{"tovar_id":"20100929153647397444000571464218","nameRus":"опора шаровая нижн. D=38,3мм K=18мм Logan","manuf_descr":"SIDEM","tovar_code":"5288"},{"tovar_id":"20110301130717396482000959720608","nameRus":"Генератор","manuf_descr":"SPIDAN","tovar_code":"5288"},{"tovar_id":"20110317171144719709001005935896","nameRus":"часть глуш.","manuf_descr":"ATOY OY","tovar_code":"5288"},{"tovar_id":"20110804174637902456000402566545","nameRus":"Тормозной диск","manuf_descr":"PILENGA","tovar_code":"5288"}]}';
    2.  
    3. $json=json_decode($json,true);
    4. echo $json['DATA'][0]['tovar_id'].' -> '.$json['DATA'][0]['manuf_descr']; 

    Если интересно гляньте)

    http://publib.boulder.ibm.com/infoc...sp?topic=/com.ibm.etools.mft.doc/bc28414_.htm
     
  10. etalcom

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

    С нами с:
    14 мар 2012
    Сообщения:
    86
    Симпатии:
    0
    Адрес:
    Вологда
    Вот теперь мне понятно!)Спасибо!
    Вывод ошибок я включил когда свой код пробовал выдавало вот так:
    Код (Text):
    1. Notice: Trying to get property of non-object in Z:\home\streetauto.ru\www\proba\test.php on line 24
    Что это значит я не пойму!
    Если мне бестолковому еще это объясните то буду вообще благодарен!
     
  11. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Это ты, что-то не то вызываешь, видать, не объект говорит...
    Ну если ты хочешь объектно, а не массивом-это делается аналогична:

    Код (PHP):
    1. $json='{"STATUS":"OK","DATA":[{"tovar_id":"20100922143336949660000558362997","nameRus":"ремень ГРМ Niss Micra 1.0 -K10 89-92","manuf_descr":"GATES","tovar_code":"5288"},{"tovar_id":"20100929153647397444000571464218","nameRus":"опора шаровая нижн. D=38,3мм K=18мм Logan","manuf_descr":"SIDEM","tovar_code":"5288"},{"tovar_id":"20110301130717396482000959720608","nameRus":"Генератор","manuf_descr":"SPIDAN","tovar_code":"5288"},{"tovar_id":"20110317171144719709001005935896","nameRus":"часть глуш.","manuf_descr":"ATOY OY","tovar_code":"5288"},{"tovar_id":"20110804174637902456000402566545","nameRus":"Тормозной диск","manuf_descr":"PILENGA","tovar_code":"5288"}]}';
    2.  
    3. $json=json_decode($json);
    4. echo $json->DATA[0]->manuf_descr; 
     
  12. etalcom

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

    С нами с:
    14 мар 2012
    Сообщения:
    86
    Симпатии:
    0
    Адрес:
    Вологда
    Ваши примеры работают!
    Просто
    советовал включить мне вывод ошибок!
    Когда я сам пытался!Вот я и включил))
    Все спасибо большое за помощь)))
     
  13. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    Да. Подразумевал, что автор будет читать текст ошибок. Такой вот оптимист :D
     
  14. etalcom

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

    С нами с:
    14 мар 2012
    Сообщения:
    86
    Симпатии:
    0
    Адрес:
    Вологда
    Если я правильно конечно понял то в ошибке глосится:
    "Что я пытаюсь получить что то не существующее"
    Вот!Но мысль то моя была правильной!Что я встал именно на том, что в моем ответе от сервера появился вот такой
    Код (Text):
    1. "STATUS":"OK","DATA":
     
  15. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    У тебя есть:
    - текст ошибки, где говорится "это не объект" и номер строки где косяк;
    - отладочный вывод var_dump.

    У тебя есть всё, чтобы понять -- эту строку надо написать иначе. Дальше нужны самые базовые знания языка: элементы массива добываются вот так, а поля объекта вот так. Найди учебник.

    Игорь, забань пацана чтобы у него было время на учебу!
     
  16. etalcom

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

    С нами с:
    14 мар 2012
    Сообщения:
    86
    Симпатии:
    0
    Адрес:
    Вологда
    Ну зачем так то жестоко, забанить сразу!
    Ладно бы я писал рекламу или еще какую нибудь гадость!
     
  17. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    я слежу за спамом =)