Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.50/18: Рейтинг темы: голосов - 18, средняя оценка - 4.50
2 / 2 / 3
Регистрация: 04.12.2015
Сообщений: 114

Нужна подсказка, чтобы распарсить ответ сервера

25.01.2019, 14:20. Показов 3860. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, помогите распарсить выражение.
Нужно получить координаты всех точек (значения location), которые выдает сервер. Их может быть от 2х до бесконечности.
К серверу клиент подключается через библиотеку CURL,
библиотеку подключить и настроить смог, но вот как выбрать данные и поместить их в вектор не понимаю.
Если это возможно, пожалуйста помогите.

Вот так выглядит ответ сервера, который читает мой CURL:
Code
1
2
3
4
5
{"matchings":[{"confidence":0.579856022813933,"geometry":"i~`oHy}d}Lx@sF|A_K|@gFpFuD","legs":[{"summary":"","weight":9.4,"duration":9.4,"steps":[],"distance":93.5},{"summary":"","weight":39.9,"duration":39.7,"steps":[],"distance":387}],"weight_name":"routability","weight":49.3,"duration":49.1,"distance":480.5}],"tracepoints":[
{"alternatives_count":0,"waypoint_index":0,"matchings_index":0,"hint":"M4NQg____38NAAAASgAAAAAAAABeAAAAcZ9aQcBMc0EAAAAAv0wSQg0AAAAlAAAAAAAAAC8AAACMpgAAPndbBJAn-AIad1sETyf4AgAA3wYohjcj","distance":7.679772270709439,"name":"бульвар Мира","location":[73.103166,49.817488]},
{"alternatives_count":0,"waypoint_index":1,"matchings_index":0,"hint":"IYNQg____38qAAAArAEAAAAAAAAAAAAAV6gnQncs-kIAAAAAAAAAACoAAADWAAAAAAAAAAAAAACMpgAABXxbBG8m-ALhe1sEMSb4AgAA7wYohjcj","distance":7.366510664016794,"name":"бульвар Мира","location":[73.104389,49.817199]},
{"alternatives_count":0,"waypoint_index":2,"matchings_index":0,"hint":"VINQg____38lAAAA2QEAAAAAAAAAAAAAHfQaQoMvEUMAAAAAAAAAACUAAADsAAAAAAAAAAAAAACMpgAAmotbBKse-AIQi1sEgh74AgAAvwkohjcj","distance":10.927257982179043,"name":"Толепова улица","location":[73.108378,49.815211]}
],"code":"Ok"}
Вот так выглядит весь код из проекта:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include "stdafx.h"
#include "iostream"
#include "string"
 
#define CURL_STATICLIB
#include "curl\curl.h"
#ifdef _DEBUG
#   pragma comment (lib, "curl/libcurl_a_Debug.lib")
#   pragma comment (lib, "curl/libssl_Debug.lib")
#   pragma comment (lib, "curl/libcrypto_Debug.lib")
#else
#   pragma comment (lib, "curl/libcurl_a_Release.lib")
#endif // DEBUG _DEBUG
 
static int writer(char *data, size_t size, size_t nmemb, std::string *writerData)
{
    if (writerData == NULL)
        return 0;
 
    writerData->append(data, size*nmemb);
 
    return size * nmemb;
}
 
 
int main()
{
    std::string content;
 
    //std::cout << "Some_Text";
 
    curl_global_init(CURL_GLOBAL_ALL);
    CURL *curl = nullptr;
    curl = curl_easy_init();
    curl_global_cleanup();
    if (curl)
    {
        curl_easy_setopt(curl, CURLOPT_URL, "http://127.0.0.1:5000/match/v1/driving/73.103130,49.817423;73.104353,49.817137;73.10824,49.81517?");
        curl_easy_setopt(curl, CURLOPT_WRITEDATA, &content);
        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writer);
        CURLcode code = curl_easy_perform(curl);
        curl_easy_cleanup(curl);
    }
    //curl_global_cleanup();
    std::cout << content;
    std::cin.get()  ;
    return 0;
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.01.2019, 14:20
Ответы с готовыми решениями:

распарсить AMF ответ сервера
Знает кто-то как можно распарсить полученный ответ сервера в формате АМФ ??

Распарсить Json-ответ сервера Vk
В общем получил ответ от сервера в вк в формате Json. Каким образом с помощью DBXJSON можно распарсить его? Интересует как получить...

Распарсить ответ от сервера в виде XML
Получаю от сервера xml документ типа: &lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot; ?&gt; &lt;response&gt; &lt;count&gt;1744&lt;/count&gt; ...

20
 Аватар для igorrr37
2897 / 2044 / 992
Регистрация: 21.12.2010
Сообщений: 3,793
Записей в блоге: 9
27.01.2019, 11:50
Лучший ответ Сообщение было отмечено lostandleft как решение

Решение

Студворк — интернет-сервис помощи студентам
При помощи boost:: property_tree.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <iostream>
#include <string>
#include <iomanip>
#include <vector>
#include <exception>
#include <boost/property_tree/json_parser.hpp>
 
namespace bpt = boost::property_tree;
 
 
int main()
{
    try
    {
        bpt::ptree pt;
        bpt::read_json("in.json", pt);
        std::vector<double> vct;
        auto ptTracepoints = pt.get_child("tracepoints");
        for (auto ibt = ptTracepoints.begin(), iet = ptTracepoints.end(); ibt != iet; ++ibt)
        {
            auto ptLocation = ibt->second.get_child("location");
            for (auto ibl = ptLocation.begin(), iel = ptLocation.end(); ibl != iel; ++ibl)
            {
                vct.emplace_back(std::stod(ibl->second.data()));
            }
        }
 
        for (auto const& val : vct)
        {
            std::cout << std::setprecision(15) << std::setw(17) << std::left << val << std::endl;
        }
    }
    catch (std::exception const& exc)
    {
        std::cerr << exc.what() << std::endl; 
    }
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.01.2019, 11:50

первые шаги с рекурсией. (нужна подсказка, но не ответ!)
вот первая задача на рекурсию и сразу ступор :cry: функция (LENGTH x) является встроенной функцией, которая возвращает в качестве...

Работа с xml: распарсить ответ от сервера и поместить значения в массивы
У меня есть ответ от сервера подобный этому: &lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt; &lt;response list=&quot;true&quot;&gt; &lt;user&gt; ...

Как отправить syn пакет чтобы он не получал обратно ответ с сервера
Подскажите как отправить syn пакет чтобы он не получал обратно ответ с сервера И можете еще скинуть как реализовать хотя бы обычный syn...

Как делать кроссдоменные GET-запросы на JavaScript, чтобы ответ сервера сохранялся на диск в выбранный путь?
В идеальном варианте, представляю себе это как-то так: var xmlhttp = getXmlHttp() xmlhttp.open('GET', '/page.php', false); ...

Распарсить ответ
Здравствуйте все. Пытаюсь сделать парсер. Мне нужно чтоб при нахождении класса 'alert' в ответе запроса, делались определённые действия....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
21
Ответ Создать тему
Новые блоги и статьи
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров В текущей версии модели успешно реализован ключевой механизм. . .
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям Реализованные компоненты: Механизм закисления почвы через протонную помпу Конкуренция между типами микориз pH как триггер сукцессии C/ P соотношение. . .
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
Решил проблему с ошибкой пагинации сообщений с сервера на алгоритме обхода дерева "Эстафета хвоста".
Hrethgir 12.07.2026
Проблема была в том, что удалялась именно новая кнопка, а не старая. Ни один ИИ не обнаружил это, а сам я смог только когда с работой стало попроще и когда заставил работать будущее автономное. . .
сукцессия 25. Хронология ошибок
anaschu 12.07.2026
# От 50-тонного гриба до устойчивого леса: хроника ошибок при построении модели вековой сукцессии микоризы ## О чём эта статья В процессе построения ОДУ-модели (система дифференциальных. . .
сукцессия 24. Промежуточное общее описание модели
anaschu 12.07.2026
Хендофф: модель АМ→ЭКМ сукцессии микоризы (ризосфера, 50 лет) Содержание проекта Симуляция вековой (50 лет) экологической сукцессии в почве леса Основные участники: АМ-гриб, ЭКМ-гриб,. . .
сукцессия 23. Более физиологичная физиология, более экологичная экология, более диффурные диффуры.
anaschu 12.07.2026
Что реально нашли и починили за эти 5 часов Правило Линдемана (КПД конверсии сахара в тело, kEff) — раньше 100% полученного углерода шло прямо в биомассу гриба; теперь только kEff=0. 5 (после. . .
сукцессия 22. От артефактов к физиологии: калибровка агентной модели грибной сукцессии для воспроизведения сезонной динамики и pH-плато
anaschu 11.07.2026
Аннотация В данной работе представлена калибровка агентной модели динамики грибных сообществ (fungal-succession), направленная на устранение нефизичных артефактов (коллапс биомассы, мгновенное. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru