c++ 프로젝트에서 json 으로 서버와 주고받을 일이 생겨 관련 라이브러리를 사용해보고자 한다.
c++ 에서 json 을 주고 받기 위해서는 rapidjson 을 주로 사용한다고 한다.
사실상 쓰는 방법은 굉장히 간단한데 세팅하는 방법이 조금 투박하다.
아래처럼 잘 따라하면 rapidjson을 사용할 수 있는 환경을 갖출 수 있을 것이다.
우선 아래 github에 접속하자.
https://github.com/Tencent/rapidjson
접속하면 아래와 같이 직접 zip 파일을 받던 clone을 하던 어떻게든 소스코드를 받는다.
받고나면 include 라는 폴더가 보일텐데 다른 파일들은 사실상 필요없고 include/rapidjson 만 필요하다.
위와 같이 include/rapidjson 이 있는데 이 rapidjson 폴더를 통째로 복사해서 visual studio 프로젝트 안에 넣어준다.
그렇게 하면 아래와 같이 구성이 될 것이다.
이렇게 rapidjson을 프로젝트 안에 넣어줬는데 아직 한 단계가 더 남았다.
아래와 같이 이동한다.
프로젝트 우클릭 -> 속성 -> C/C++ -> 일반 -> 추가 포함 디렉토리
이동하고 나면 아래와 같이 보일 것이다.
자 그럼 여기서 추가 포함 디렉터리에 include/rapidjson 이라고 써준다.
이렇게 하고 build 를 진행해보면 문제없이 잘 실행되는 것을 볼 수 있을 것이다.
rapidjson 은 c++ 상에서 json 을 쓴다고 하면 거의 무조건 쓰는 표준같은 존재라고 한다. 사용법도 꽤나 간단하다.
혹시나 지금 테스트해보고 있는 예제를 첨부하겠다. 위 과정대로만 따라하면 문제없이 동작하는 예제이다.
#define RAPIDJSON_HAS_STDSTRING 1
#include <iostream>
#include <string>
#include "rapidjson/document.h"
#include "rapidjson/writer.h"
#include "rapidjson/stringbuffer.h"
using namespace rapidjson;
int main() {
// 1. JSON 문자열을 파싱해서 DOM 으로 구조화 한다.
const std::string json = "{\"project\":\"rapidjson\",\"stars\":10}";
Document d;
d.Parse(json);
// 2. DOM 내용을 변경한다.
Value& s = d["stars"];
s.SetInt(s.GetInt() + 1);
// 3. DOM 내용을 다시 문자열로 변경한다.
StringBuffer buffer;
Writer<StringBuffer> writer(buffer);
d.Accept(writer);
// 문자열을 다시 출력한다. {"project":"rapidjson","stars":11}
std::cout << buffer.GetString() << std::endl;
}
아래 공식 홈페이지에서 사용법을 보는 것도 좋다.
https://miloyip.github.io/rapidjson/index.html
'C & C++ > C++' 카테고리의 다른 글
[C++] C++ listen api 의 parameter 중 backlog. (0) | 2022.11.10 |
---|---|
[C++] C++ 헷갈리는 개념 간단 정리 (2) (0) | 2022.11.09 |
[C++] C++ 헷갈리는 개념 간단 정리 (1) (0) | 2022.11.07 |
[C++] 임시 객체란 무엇인가? Temporary Object? (0) | 2022.10.19 |
[C++] C++ 에도 annotation이 존재할까? (0) | 2022.01.03 |