Получение информации с другого сайта

Тема в разделе "Как сделать...", создана пользователем djvavik, 23 апр 2019.

Статус темы:
Закрыта.
  1. invader

    invader Серый кардинал в отставке :)

    Moderator
    • Супермодератор
    Регистр.:
    3 апр 2006
    Сообщения:
    2.633
    Симпатии:
    5.841
    Как правильно написали вам выше, ваш JSON невалидный
    Почитайте:
    https://habr.com/ru/company/mailru/blog/314014/
     
    djvavik нравится это.
  2. djvavik

    djvavik

    Регистр.:
    27 авг 2013
    Сообщения:
    167
    Симпатии:
    19
    Поправил. Результат:

    {
    "result": "OK",
    "message": null,
    "redirect": null,
    "value": {
    "content": [{
    "id": 54448,
    "visible": true,
    "extId": "2464662",
    "compositeId": "13103-23-02-2019-16",
    "name": "Москва, Вернадцкого, 32",
    "flat": null,
    "phone": null,
    "author": "Виктория",
    "authorUsername": "mail@mail.ru",
    "authorEmail": "mail@mail.ru",
    "description": "Сообщение пользователя",
    "created": "23 февраля 2019 07:45",
    "deadline": "24 февраля 2019 07:45",
    "changed": "24 февраля 2019 08:00",
    "company": {
    "id": 13103,
    "inn": "123456789",
    "name": "ООО \"Рога \"Копыта\"",
    "email": "info@mail.ru",
    "phone": null
    },
    "address": {
    "id": 596703,
    "address": "Москва, Вернадцкого, 32",
    "created": null,
    "changed": null,
    "companyId": 13103,
    "districtId": 119,
    "districtDDId": 25
    },
    "status": "EXPIRED_RETURN_TO_DD",
    "category": {
    "id": 239,
    "name": "3.14. Ненадлежащее санитарное состояние подъездов и лифтов (нарушение периодичности уборки, наличие мусора и грязи, насекомые, грызуны, запах)",
    "group": "3. Содержание подъездов",
    "categoryId": 22,
    "visible": false,
    "deadline": 24.0,
    "deadlineGzi": 72.0,
    "canBeDD": true,
    "workingHours": false,
    "workingHoursGZI": false
    },
    "responses": [{
    "comment": null,
    "claimId": 54448,
    "id": 98036,
    "status": "EXPIRED_RETURN_TO_DD",
    "created": null,
    "author": "admin@admin.ru",
    "answerId": null,
    "answer": null,
    "images": []
    }],
    "images": [],
    "files": [],
    "initiator": "Житель"
    }],
    "totalPages": 1,
    "totalElements": 1,
    "last": true,
    "number": 0,
    "size": 10,
    "numberOfElements": 1,
    "sort": [{
    "direction": "DESC",
    "property": "id",
    "ignoreCase": false,
    "nullHandling": "NATIVE",
    "ascending": false,
    "descending": true
    }],
    "first": true
    }
    }
     
    Последнее редактирование: 13 июн 2019
  3. Minor

    Minor

    Регистр.:
    16 авг 2012
    Сообщения:
    199
    Симпатии:
    77
    Код:
    <?php
    $jsonstring = '{
    "result": "OK",
    "message": null,
    "redirect": null,
    "value": {
    "content": [{
    "id": 54448,
    "visible": true,
    "extId": "2464662",
    "compositeId": "13103-23-02-2019-16",
    "name": "Москва, Вернадцкого, 32",
    "flat": null,
    "phone": null,
    "author": "Виктория",
    "authorUsername": "mail@mail.ru",
    "authorEmail": "mail@mail.ru",
    "description": "Сообщение пользователя",
    "created": "23 февраля 2019 07:45",
    "deadline": "24 февраля 2019 07:45",
    "changed": "24 февраля 2019 08:00",
    "company": {
    "id": 13103,
    "inn": "123456789",
    "name": "ООО \"Рога \"Копыта\"",
    "email": "info@mail.ru",
    "phone": null
    },
    "address": {
    "id": 596703,
    "address": "Москва, Вернадцкого, 32",
    "created": null,
    "changed": null,
    "companyId": 13103,
    "districtId": 119,
    "districtDDId": 25
    },
    "status": "EXPIRED_RETURN_TO_DD",
    "category": {
    "id": 239,
    "name": "3.14. Ненадлежащее санитарное состояние подъездов и лифтов (нарушение периодичности уборки, наличие мусора и грязи, насекомые, грызуны, запах)",
    "group": "3. Содержание подъездов",
    "categoryId": 22,
    "visible": false,
    "deadline": 24.0,
    "deadlineGzi": 72.0,
    "canBeDD": true,
    "workingHours": false,
    "workingHoursGZI": false
    },
    "responses": [{
    "comment": null,
    "claimId": 54448,
    "id": 98036,
    "status": "EXPIRED_RETURN_TO_DD",
    "created": null,
    "author": "admin@admin.ru",
    "answerId": null,
    "answer": null,
    "images": []
    }],
    "images": [],
    "files": [],
    "initiator": "Житель"
    }],
    "totalPages": 1,
    "totalElements": 1,
    "last": true,
    "number": 0,
    "size": 10,
    "numberOfElements": 1,
    "sort": [{
    "direction": "DESC",
    "property": "id",
    "ignoreCase": false,
    "nullHandling": "NATIVE",
    "ascending": false,
    "descending": true
    }],
    "first": true
    }
    }';
    
    $json = json_decode($jsonstring);
    
    //Вся структура 
    print_r($json);
    
    //Выводим так 
    echo $json->result;
    echo '<br/><br/>';
    //Если вложенность, то так
    echo $json->value->content[0]->id;
    
    Демо http://sandbox.onlinephpfunctions.com/code/e756bd2f01ad2fd674c4f66cc6d610b31a027c1a
     
  4. djvavik

    djvavik

    Регистр.:
    27 авг 2013
    Сообщения:
    167
    Симпатии:
    19
    Спасибо за подсказку, но дело в том, что значения могут постоянно меняться. Просмотрел код и увидел значения с результата, который я прислал. Как в этом случае быть?

    Или это просто пример, как вывести JSON читабельно для человека?
    Я бы хотел сохранить некоторые значения с результата, через точку с запятой. При этом в начале строки вставить слово, пример: Таблица 1; Москва, Вернадского 32; Елена; mail@mail.ru; Сообщегие от пользователя; категория
     
    Последнее редактирование: 13 июн 2019
  5. Minor

    Minor

    Регистр.:
    16 авг 2012
    Сообщения:
    199
    Симпатии:
    77
    Каждая строчка которая получается, затем прогоняется через такой скрипт и выводится как я показал в самом низу.
    Слово "Таблица 1" откуда берется вообще?
     
  6. djvavik

    djvavik

    Регистр.:
    27 авг 2013
    Сообщения:
    167
    Симпатии:
    19
    Необходимо добавить в начале строки. "Таблица 1" - название является постоянным.

    Все равно не пойму, для чего в коде переписывать значения в переменных. Ведь предыдущем коде (В начале страницы) мы получаем результат, который постоянно меняется. Немного не понятно, нужно просто в конце кода добавить

    $json = json_decode($jsonstring);

    //Вся структура
    print_r($json);

    //Выводим так
    echo $json->result;
    echo '<br/><br/>';

    Или писать весь JSON?
     
  7. Minor

    Minor

    Регистр.:
    16 авг 2012
    Сообщения:
    199
    Симпатии:
    77
    json_decode выполняет преобразование строки в обьект, с которым потом можно работать через вывод его свойств, как $json->result, иначе как из строки выдрать нужные данные? (ну вообще можно, но про регулярки я не хочу рассказывать, это ненужные костыли).

    Строку в начале естественно не нужно вносить в скрипт, вместо нее ставится ваш результат, но без нее в демке не показать результать.

    Я показываю как обьектом работать, строку дописать не проблема понятное дело
     
  8. djvavik

    djvavik

    Регистр.:
    27 авг 2013
    Сообщения:
    167
    Симпатии:
    19
    Пояснения являются очень размытыми. Единственное, понял, что нужно преобразовать в массив. Но не понятно, что нужно вписать вместо результата JSON в основной код, что бы получить массив?

    $json->result ?

    Так же и про добавление в строку. Это логично, что можно добавить в строку, все что угодно!

    UP

    Вопрос остается актуальным. Как получить нужные значения?

    Всем спасибо за помощь. Очень ценю каждый ответ.
     
    Последнее редактирование: 14 июн 2019
  9. Minor

    Minor

    Регистр.:
    16 авг 2012
    Сообщения:
    199
    Симпатии:
    77
    Пояснения кажуться очень размытыми, потому что желательно иметь базовые навыки языка с которым вы хотите работать.

    Если посмотреть прошлую страницу, то скрипт заканчивается на тот же самый json_decode, а в $data будет та самая строка json

    Поэтому продолжая код
    Код:
    ...
    $data=request('https://eds.mosreg.ru/api/claims?status=EXPIRED_RETURN_TO_DD');
    echo $data;
    $data_array=json_decode($data);
    
    //Выводим 
    echo  'Результат;'
    echo $json->value->content[0]->name.';';
    //и т.д., структуру можно посмотреть через print_r($json);
    
     
  10. Angelok

    Angelok Создатель

    Регистр.:
    26 июл 2017
    Сообщения:
    33
    Симпатии:
    17

    <?php

    $data_array=json_decode($data, true);


    распаковывает json строку в массив (array)
     
Статус темы:
Закрыта.