rapidjson

Mattepuffo's logo
Parsing JSON in C++ con Rapidjson

Parsing JSON in C++ con Rapidjson

Per fare il parsing di una struttra JSON in C++ ci stanno molte librerie; io mi sono buttato su Rapidjson.

La documentazione sul sito ufficiale non è proprio il massimo, ma nel complesso è abbastanza semplice da implementare e includere nel nostro progetto.

Scaricate la libreria e aggiungete la cartella rapidjson al progetto; dentro ci stanno diversi file .h.

Quello che faremo è usare CURL per prendere i dati da remoto, fare il cast di CURLcode in string, e infine parsare i dati JSON.

Cominciamo come al solito dal file di intestazione:

#ifndef READ_H
#define    READ_H

#include <iostream>
#include <curl/curl.h>
#include <iomanip>
#include "rapidjson/document.h"
#include "rapidjson/rapidjson.h"

using namespace std;
using namespace rapidjson;

extern "C" int readCurlHelper(char *data, size_t size, size_t nmemb, string *buffer);

class Read {
public:
    Read();
    virtual ~Read();
    void read(string file);
    size_t curlToString(char *data, size_t size, size_t nmemb, string *buffer);
private:
    string response;
    string url;
    CURL *curl;
    CURLcode res;
    struct curl_slist *headers;
    Document document;
};

#endif

Rispetto all'ultimo articolo, abbiamo aggiunto le librerie rapidjson e un oggetto Document.