C++ JSON

Da Andreabont's Wiki.

Per il C++ esistono innumerevoli librerie per lavorare con il JSON. La libreria qui usata è header-only ed è reperibile qui.

Composizione

Composizione attriverso chiavi

#include <iostream>
#include "json.hpp"

int main() {
    
    nlohmann::json myJson;
    myJson["a"] = 1;
    myJson["b"]["x"] = 2;
    myJson["b"]["y"] = 3;
    
    std::cout << myJson << std::endl; // Scrive {"a":1,"b":{"x":2,"y":3}}
    
}

Composizione con initializer list

#include <iostream>
#include "json.hpp"

int main() {
       
    nlohmann::json myJson = {
        {"a", 1},
        {"b", {
            {"x", 2},
            {"y", 3}
        }}
    };
    
    std::cout << myJson << std::endl; // Scrive {"a":1,"b":{"x":2,"y":3}}
    
}

Composizione attraverso stringa

#include <iostream>
#include "json.hpp"

int main() {
       
    nlohmann::json myJson = R"({"a":1,"b":{"x":2,"y":3}})"_json;
    
    std::cout << myJson << std::endl;
    
}

Selezione

#include <iostream>
#include "json.hpp"

int main() {
    
    nlohmann::json myJson = R"({
        "baz": ["one", "two", "three"],
        "foo": "bar"
    })"_json;
    
    std::cout << myJson["baz"][1] << std::endl;
    std::cout << myJson["/baz/1"_json_pointer] << std::endl;

}

Serializzazione

#include <iostream>
#include <map>
#include <vector>
#include "json.hpp"

int main() {
    
    std::vector<std::string> myVector = {"a", "b", "c"};
    std::map<std::string, int> myMap = {{"one", 1}, {"two", 2}, {"three", 3}};
    
    nlohmann::json myJson;
    
    myJson["vector"] = myVector;
    myJson["map"] = myMap;

    std::cout << myJson << std::endl; // Stampa {"map":{"one":1,"three":3,"two":2},"vector":["a","b","c"]}
    
}