JSON 문자열을 객체로 변환하는 예제
-
라이브러리 포함: 먼저,
rapidjson
헤더 파일을 포함해야 합니다.#include <rapidjson/document.h> #include <rapidjson/writer.h> #include <rapidjson/stringbuffer.h>
-
JSON 문자열 정의: 변환할 JSON 문자열을 정의합니다.
const char* json = "{\"project\":\"rapidjson\",\"stars\":10}";
-
문서 객체 생성 및 파싱:
rapidjson::Document
객체를 생성하고Parse
메소드를 사용하여 JSON 문자열을 파싱합니다.rapidjson::Document document; if (document.Parse(json).HasParseError()) { // 파싱 에러 처리 std::cerr << "JSON parse error: " << document.GetParseError() << std::endl; return -1; }
-
데이터 접근: 파싱한 JSON 데이터를 객체처럼 접근할 수 있습니다.
if (document.HasMember("project") && document["project"].IsString()) { std::cout << "Project: " << document["project"].GetString() << std::endl; } if (document.HasMember("stars") && document["stars"].IsInt()) { std::cout << "Stars: " << document["stars"].GetInt() << std::endl; }
전체 예제 코드
아래는 위의 절차를 모두 포함한 전체 예제 코드입니다.
이 예제 코드를 컴파일하고 실행하면 Project: rapidjson
과 Stars: 10
이 출력됩니다.
#include <iostream> #include <rapidjson/document.h> int main() { // JSON 문자열 정의 const char* json = "{\"project\":\"rapidjson\",\"stars\":10}"; // Document 객체 생성 rapidjson::Document document; // JSON 문자열 파싱 if (document.Parse(json).HasParseError()) { // 파싱 에러 처리 std::cerr << "JSON parse error: " << document.GetParseError() << std::endl; return -1; } // 데이터 접근 및 출력 if (document.HasMember("project") && document["project"].IsString()) { std::cout << "Project: " << document["project"].GetString() << std::endl; } if (document.HasMember("stars") && document["stars"].IsInt()) { std::cout << "Stars: " << document["stars"].GetInt() << std::endl; } return 0; }
rapidjson
은 매우 강력하고 유연한 라이브러리이므로, 다양한 JSON 데이터 구조를 처리할 수 있습니다. 더 복잡한 JSON 데이터를 처리하려면 Document
객체의 여러 메소드와 속성을 활용하면 됩니다.