Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 9 из 9

Тема: JSON Parser

  1. #1
    Аватар для Bib
    Пользователь

    Статус
    Оффлайн
    Регистрация
    02.08.2017
    Адрес
    Челябинск
    Сообщений
    56
    Репутация:
    6 ±

    JSON Parser

    Решил поэкспериментировать и написать JSON парсер.
    Инклуд позволяет легко извлекать необходимые данные формата JSON из ответа сервера.
    Пока что доступен следующий функционал:
    PHP код:
    stock GetStringValue(data[], key[], output[], output_size sizeof output// возвращает  в output[] строковое значение ключа

    stock GetIntValue(data[], key[]) // возвращает целочисленное значение ключа

    stock GetObject(data[], key[], output[], output_size sizeof output// возвращает в output[] содержимое объекта

    // в ближайшее время добавлю массивы 
    Пример использования:
    PHP код:
    #include <a_http>
    main()
    {
        
    HTTP(0HTTP_GET"freegeoip.net/json/youtube.com""""OnResponse"); 
        
    }

    forward OnResponse(indexresponse_codedata[]);
    public 
    OnResponse(indexresponse_codedata[])
    {
        new 
    ip[22];
        
    GetStringValue(data"ip"ip);
        print(
    ip);
        new 
    country_name[30];
        
    GetStringValue(data"country_name"country_name);
        print(
    country_name);
        
    printf("zipcode = %i"GetIntValue(data"zip_code"));

    Содержимое data[] при запросе выше:
    PHP код:
    {"ip":"172.217.12.238","country_code":"US","country_name":"United States","region_code":"CA","region_name":"California","city":"Mountain View","zip_code":"94043","time_zone":"America/Los_Angeles","latitude":37.4192,"longitude":-122.0574,"metro_code":807
    **** RolePlay - всё слоооожно

  2. Пользователь сказал cпасибо:
    Outsider (22.01.2018)
  3. #2
    Аватар для Outsider
    Пользователь

    Статус
    Оффлайн
    Регистрация
    06.03.2017
    Сообщений
    82
    Репутация:
    0 ±
    Наконец-то!

  4. #3
    Аватар для ziggi
    Проверенный

    Статус
    Оффлайн
    Регистрация
    14.05.2015
    Сообщений
    1,181
    Репутация:
    790 ±
    Цитата Сообщение от Outsider Посмотреть сообщение
    Наконец-то!
    В смысле наконец-то? JSON в SA-MP'е был 10 лет назад: http://forum.sa-mp.com/showthread.php?t=48439

  5. #4
    Аватар для Outsider
    Пользователь

    Статус
    Оффлайн
    Регистрация
    06.03.2017
    Сообщений
    82
    Репутация:
    0 ±
    Не знал. Почему никто не юзает? Вместо всяких mxINI. Это же в разы удобнее.

  6. #5
    Аватар для ziggi
    Проверенный

    Статус
    Оффлайн
    Регистрация
    14.05.2015
    Сообщений
    1,181
    Репутация:
    790 ±
    Цитата Сообщение от Outsider Посмотреть сообщение
    Не знал. Почему никто не юзает? Вместо всяких mxINI. Это же в разы удобнее.
    Чем удобнее? INI редактировать проще, чем не форматированную JSON строку. Да и медленнее. Не знаю как DJson, но конкретно эта реализация прогоняет цикл по всему содержимому файла при каждом вызове GetStringValue/GetIntValue.

    В плане хранения данных в файле, равных mxINI нет. Ну, если ты пользуешься YSI, то, наверное, лучше воспользоваться y_ini.

  7. #6
    Аватар для Outsider
    Пользователь

    Статус
    Оффлайн
    Регистрация
    06.03.2017
    Сообщений
    82
    Репутация:
    0 ±
    Та да, тоже сейчас глянул код. Так мог сделать и я. )

    Насчет проще не согласен. Может, дело привычки.

    DJson поприятнее. Спасибо за ссылочку.
    Последний раз редактировалось Outsider; 22.01.2018 в 19:58.

  8. #7
    Аватар для ziggi
    Проверенный

    Статус
    Оффлайн
    Регистрация
    14.05.2015
    Сообщений
    1,181
    Репутация:
    790 ±
    Цитата Сообщение от Outsider Посмотреть сообщение
    Та да, тоже сейчас глянул код. Так мог сделать и я. )

    Насчет проще не согласен. Может, дело привычки.
    Что проще (JSON в файле выглядит именно так, одной строкой, без форматирования.)? Это:
    Код:
    {"ip":"172.217.12.238","country_code":"US","country_name":"United States","region_code":"CA","region_name":"California","city":"Mountain View","zip_code":"94043","time_zone":"America/Los_Angeles","latitude":37.4192,"longitude":-122.0574,"metro_code":807}
    Или это:
    Код:
    ip = 172.217.12.238
    country_code = US
    country_name = United States
    region_code = CA
    region_name = California
    ...

  9. #8
    Аватар для Outsider
    Пользователь

    Статус
    Оффлайн
    Регистрация
    06.03.2017
    Сообщений
    82
    Репутация:
    0 ±
    Понял теперь о чем ты. Никогда не сталкивался с не форматированным json, как бы смешно это не звучало. Если с этой стороны смотреть, твоя взяла. ))

  10. #9
    Аватар для Dima_Leonov
    Пользователь

    Статус
    Оффлайн
    Регистрация
    22.04.2019
    Сообщений
    1
    Репутация:
    0 ±
    Остался у кого данный инклуд?

 

 

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •