C++でJSONを扱うためのプロパティの方法


  1. JSON ライブラリを使用する方法: C++には、JSONを扱うためのさまざまなライブラリが存在します。例えば、RapidJSONやnlohmann/jsonなどがあります。これらのライブラリを使用すると、JSONデータを簡単に解析したり、生成したりすることができます。

    以下は、RapidJSONを使用してJSONを解析する例です:

    #include <rapidjson/document.h>
    #include <rapidjson/writer.h>
    #include <rapidjson/stringbuffer.h>
    #include <iostream>
    int main() {
       const char* json = "{\"name\":\"John\",\"age\":30,\"city\":\"New York\"}";
       rapidjson::Document document;
       document.Parse(json);
       if (document.HasParseError()) {
           std::cout << "JSONの解析エラー: " << document.GetParseError() << std::endl;
           return 1;
       }
       std::string name = document["name"].GetString();
       int age = document["age"].GetInt();
       std::string city = document["city"].GetString();
       std::cout << "名前: " << name << std::endl;
       std::cout << "年齢: " << age << std::endl;
       std::cout << "都市: " << city << std::endl;
       return 0;
    }
  2. C++の標準ライブラリを使用する方法: C++の標準ライブラリには、JSONを扱うための機能が追加される予定です。C++17以降では、std::anystd::variantを使用して、JSONのプロパティを表現することができます。ただし、まだ標準化されていないため、利用できる環境に制約があります。

    以下は、C++17以降を使用してJSONを扱う例です:

    #include <iostream>
    #include <any>
    #include <string>
    #include <unordered_map>
    int main() {
       std::unordered_map<std::string, std::any> json;
       json["name"] = std::string("John");
       json["age"] = 30;
       json["city"] = std::string("New York");
       std::string name = std::any_cast<std::string>(json["name"]);
       int age = std::any_cast<int>(json["age"]);
       std::string city = std::any_cast<std::string>(json["city"]);
       std::cout << "名前: " << name << std::endl;
       std::cout << "年齢: " << age << std::endl;
       std::cout << "都市: " << city << std::endl;
       return 0;
    }