Как заполнить вектор или массив с помощью JSON C++

Пожалуйста, помогите мне заполнить векторы или массивы из запроса CURL через Json response.

У меня есть ответ с сайта OSRM (вы можете увидеть его ниже)/ Это формат JSON, но я не могу разобрать его и использовать в своем коде позже. Я не понимаю, как это сделать. Может кто-нибудь мне помочь?

{ ":" точка трассировки
[
{"location": [73.103166,49.817488], "name": "some street1", "hint": "10UDgP ___ k =", "matchings_index": 0, "waypoint_index": 0, "alternatives_count": 0}, {" location ": [73.104389,49.817199]," name ":" some street2 "," hint ":" xUUDgP ___ k = "," matchings_index ": 0," waypoint_index ": 1," alternatives_count ": 0}, {" location ": [73.108378,49.815211], "name": "some street3", "hint": "- EUDgP ___ k =", "matchings_index": 0, "waypoint_index": 2,"alternatives_count": 0}], "matchings":

[{"distance": 480.5,"duration": 31.6, "weight": 31.6, "weight_name": "routability", "geometry": "i ~` oHy} d} Lx @ sF | A_K | @gFpFuD ", "достоверность": 0,579856,"ноги": [{"расстояние":93,5,"продолжительность":6,2,"вес":6,2,"сводка": "", "шаги":[]},{"расстояние":387,"длительность":25,4,"вес":25,4,"сводка": "", "шаги":[]}] } ], "код": "ОК"}

Я скачал https://github.com/nlohmann/json но я не могу его использовать. Пожалуйста, дай мне что-нибудь, чтобы решить проблему. Мой код VS2015 ниже

    #pragma comment(lib, "ws2_32.lib")
    #pragma comment(lib, "wldap32.lib")
    #pragma comment(lib, "Normaliz.lib")
    #pragma comment(lib, "crypt32.lib")

    #define CURL_STATICLIB

    #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

    #include "curl\curl.h"

    #include "stdafx.h"
    #include "iostream"
    #include "string"
    #include <iomanip>


    #include "nlohmann/json.hpp"
    using json = nlohmann::json;


    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()
    {
        json JStruct ;
        std::string content;

        //std::cout << "Some_Text";

        std::vector<double> myLatpoints;
        std::vector<double> myLonpoints;

        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();

        JStruct = content;

        // HELP ME TO FILL UP MY VECTORS HERE PLEASE


        std::cin.get()  ;
        return 0;
    }

0 ответов

Другие вопросы по тегам