es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Intentando obtener una salida JSON desde cURLlib en c++.

Entonces, estoy utilizando cURLlib en C++ para obtener datos del mercado utilizando API’s, el problema es que no logro entender la documentación proporcionada sobre cURLlib para C++.
La API devuelve un archivo JSON del cual deseo extraer datos para usarlos en mi propio algoritmo.
La única solución que veo en este momento es analizar la cadena que devuelve cURL, pero creo que eso sería demasiado largo y complicado, así que si hay alguna manera de obtener una salida directa como un archivo JSON desde cURL, podría usar nlohmann e iterar a través de él de esa manera.

(He cambiado la clave de API proporcionada y la he reemplazado con “demo” en el código)

Este es mi código hasta ahora

#include <iostream>
#include <string>
#include <curl curl.h="">
#include<nlohmann json.hpp="">

using namespace std;
using namespace nlohmann;

static size_t WriteCallback(void* contents, size_t size, size_t nmemb, void* userp)
{
    ((string*)userp)->append((char*)contents, size * nmemb);
    return size * nmemb;
}

int main()
{
    string readBuffer;

    // usamos cURL para obtener el archivo json como cadena
    auto curl = curl_easy_init();
    if (curl) {
        curl_easy_setopt(curl, CURLOPT_URL, "https://www.alphavantage.co/query?function=TIME_SERIES_INTRADAY&symbol=IBM&interval=1min&apikey=demo"); // aquí demo es la clave de la API
        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback);
        curl_easy_setopt(curl, CURLOPT_WRITEDATA, &readBuffer);
        curl_easy_perform(curl);
        curl_easy_cleanup(curl);
    }

    vector<string> Entries;
    string push;
    for (auto it = readBuffer.begin(); it != readBuffer.end(); it++)
    {
        // realizar el procesamiento necesario aquí
    }
}

Así que si hay alguna manera de obtener un archivo JSON como salida, sería increíble. Cualquier ayuda sería muy apreciada.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Solución

    Puedes usar la biblioteca nlohmann/json para analizar directamente la cadena JSON devuelta por cURL. Agrega el siguiente código antes del bucle for en el código que proporcionaste:

    c++
    json data = json::parse(readBuffer); // analizar cadena JSON
    auto timeSeries = data["Time Series (1min)"]; // obtener datos de serie temporal
    for (auto it = timeSeries.begin(); it != timeSeries.end(); it++)
    {
    string timestamp = it.key(); // obtener clave de marca de tiempo
    auto values = it.value(); // obtener arreglo de valores
    double open = values["1. open"]; // obtener precio de apertura
    double close = values["4. close"]; // obtener precio de cierre
    double high = values["2. high"]; // obtener precio más alto
    double low = values["3. low"]; // obtener precio más bajo
    // hacer algo con los datos
    }

    Esto analizará la cadena JSON devuelta por cURL y extraerá los datos relevantes del objeto "Time Series (1min)". Luego puedes iterar a través de los datos de la serie temporal y extraer la información que necesitas.

    Ten en cuenta que necesitarás agregar #include <nlohmann json.hpp=""> al principio de tu código para usar la biblioteca nlohmann/json.

Comments are closed.