Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> PHP JSON и API На http://api.stackoverflow.com, Вынуть из JSON данные. 
V
    Опции темы
Marlik
Дата 2.10.2010, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 212
Регистрация: 25.2.2007
Где: Рязань

Репутация: нет
Всего: нет



Доброго Всем. Появилась задачка, вынуть записи , комментарии с нескольких сайтов. Эти сайты предоставляют свое API для этого. Нашел класс с библиотекой написанные на PHP, которые реализуют это. Предположительно данные выдаются в JSON формате.


phpstack.class.php
lib/request.core.class.php


А вот сам скрипт получающий формат данных:

Код

<?php
    require_once('lib/requestcore.class.php');
    require_once('phpstack.class.php');

    $so = new PHPstack('stackoverflow.com', 'yourAPIKey');
    $answer = $so->getAnswers(2921234);
    print_r($answer);
?>


Где getAnswers(2921234) - метод класса
2921234 - id записи

Получаю вот такую бяку:

Код

ResponseCore Object
(
    [header] => Array
        (
            [cache-control] => private
            [content-type] => application/json; charset=utf-8
            [content-encoding] => gzip
            [x-aspnetmvc-version] => 2.0
            [x-ratelimit-max] => 10000
            [x-ratelimit-current] => 9998
            [x-aspnet-version] => 4.0.30319
            [date] => Sat, 02 Oct 2010 09:46:11 GMT
            [connection] => close
            [content-length] => 504
            [_info] => Array
                (
                    [url] => http://api.stackoverflow.com/1.0/answers/2921234?key=API_Key
                    [content_type] => application/json; charset=utf-8
                    [http_code] => 200
                    [header_size] => 297
                    [request_size] => 362
                    [filetime] => -1
                    [ssl_verify_result] => 0
                    [redirect_count] => 0
                    [total_time] => 0.835456
                    [namelookup_time] => 0.064582
                    [connect_time] => 0.286885
                    [pretransfer_time] => 0.286901
                    [size_upload] => 0
                    [size_download] => 504
                    [speed_download] => 603
                    [speed_upload] => 0
                    [download_content_length] => 504
                    [upload_content_length] => 0
                    [starttransfer_time] => 0.835352
                    [redirect_time] => 0
                    [method] => GET
                )

        )

    [body] => stdClass Object
        (
            [total] => 1
            [page] => 1
            [pagesize] => 30
            [answers] => Array
                (
                    [0] => stdClass Object
                        (
                            [answer_id] => 2921234
                            [accepted] => 
                            [answer_comments_url] => /answers/2921234/comments
                            [question_id] => 2921179
                            [owner] => stdClass Object
                                (
                                    [user_id] => 252591
                                    [user_type] => registered
                                    [display_name] => Crozin
                                    [reputation] => 4165
                                    [email_hash] => 06407bae4ac071e63df00ec6e34ed5ac
                                )

                            [creation_date] => 1274964794
                            [last_activity_date] => 1274964794
                            [up_vote_count] => 2
                            [down_vote_count] => 0
                            [view_count] => 108
                            [score] => 2
                            [community_owned] => 
                            [title] => How to get parameters from the URL to the model in cakePHP?
                        )

                )

        )

    [status] => 200
)


Теперь  надо получить доступ к данным, а как это выглядит, не вполне понимаю. Может кто-то сталкивался с этим. 
С PHP и JSON знакомлюсь первый день. Если нужны еще данные, подкину.
Спасибо.




PM WWW Skype   Вверх
Marlik
Дата 2.10.2010, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 212
Регистрация: 25.2.2007
Где: Рязань

Репутация: нет
Всего: нет



Разобрался.

Код

$answer = $so->getAnswers(array('key1' => value1, 'key2' => value2));


Нет не разобрался, это я так получаю hash, в переменную $answer, а вот как из hash'а получить данные.

Первый вариант:

Код

$answer = $answer -> body;
 

Получаю из этой мешанины все что относится к массиву body. Но там по моему вложенные массивы, или как их там ассоциативные. 

Как вынуть значения из многомерного, ассоциативного массива?


Это сообщение отредактировал(а) Marlik - 4.10.2010, 10:26
PM WWW Skype   Вверх
Muerto
Дата 7.10.2010, 22:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1207
Регистрация: 23.9.2006

Репутация: 3
Всего: 4



Marlik, Если stdClass то нужно работать как с объектом через ->
Если массив то скобочками  smile 


--------------------
user posted image
PM MAIL   Вверх
Marlik
Дата 8.10.2010, 07:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 212
Регистрация: 25.2.2007
Где: Рязань

Репутация: нет
Всего: нет



Спасибо это я понял, разобрался как из обьекта массив состряпать и обратно. Но кое-что не получается, вот я вынул тот-же $answer->body и трындец, а как вынуть тот-же title из обьекта?  Или к примеру, вынул какое-то значение из обьекта, а вся остальная бяка почему со скобочками выводится?
PM WWW Skype   Вверх
awdev
Дата 11.10.2010, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 72
Регистрация: 22.11.2009

Репутация: 1
Всего: 1



Цитата

for($i=0;$i<count($response->body->answers);$i++)
 echo $response->body->answers[$i]->title.PHP_EOL;

PM MAIL   Вверх
Marlik
Дата 13.10.2010, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 212
Регистрация: 25.2.2007
Где: Рязань

Репутация: нет
Всего: нет



Спасибо конечно, но что-то не понял как это использовать.
PM WWW Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0450 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.