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.