2 / 2 / 3
Регистрация: 04.12.2015
Сообщений: 114

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

25.01.2019, 14:20. Показов 3881. Ответов 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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 08.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru