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 객체의 여러 메소드와 속성을 활용하면 됩니다.
