RapidJSON
SAX/DOM 스타일 API를 모두 갖춘 C++용 빠른 JSON parser/generator
Install
별도의 설치는 필요하지 않다.
git clone을 받은 후 include 폴더 내 rapidjson 폴더를 src 폴더와 같은 경로에 위치 시켜 사용할 수 있다.
$ https://github.com/Tencent/rapidjson.git
RapidJSON 사용
// 입력 JSON을 JSONx 형식으로 변환하는 command line tool
// rapidjson/example/simpledom/simpledom.cpp`
#include "rapidjson/document.h"
#include "rapidjson/writer.h"
#include "rapidjson/stringbuffer.h"
#include <iostream>
using namespace rapidjson;
int main() {
// 1. Parse a JSON string into DOM.
const char* json = "{\"project\":\"rapidjson\",\"stars\":10}";
Document d;
d.Parse(json);
// 2. Modify it by DOM.
Value& s = d["stars"];
s.SetInt(s.GetInt() + 1);
// 3. Stringify the DOM
StringBuffer buffer;
Writer<StringBuffer> writer(buffer);
d.Accept(writer);
// Output {"project":"rapidjson","stars":11}
std::cout << buffer.GetString() << std::endl;
return 0;
}
DOM API
- tutorial: DOM API 기본 사용법
SAX API
- simplereader: Reader로 JSON을 구문 분석하는 동안 모든 SAX 이벤트를 덤프
- condense: 모든 공백을 제거하고 JSON을 다시 작성하는 command line tool
- pretty: PrettyWriter의 들여쓰기와 줄 바꿈을 사용하여 JSON을 다시 작성하는 command line tool
- capitalize: JSON에서 문자열을 대문자로 표시하는 command line tool
- messagereader: SAX API를 사용하여 JSON 메시지를 parse
- serialize: SAX API를 사용하여 C++ 개체를 JSON으로 serialize(직렬화)
- jsonx: SAX events를 JSONx (일종의 XML) format으로 문자열화(stringify)하는 JsonxWriter를 구현
Schema
- schemavalidator : JSON 스키마로 JSON을 검증하는 command line tool
Advanced
- prettyauto: UTF 인코딩으로 JSON을 자동으로 처리하도록 수정된 pretty 버전
- parsebyparts: C++11 thread를 사용하여 JSON을 부분적으로 구문 분석할 수 있는 AsyncDocumentParser를 구현
- filterkey: 사용자가 지정한 key로 모든 value을 제거하는 command line tool
- filterkeydom: 위와 동일한 tool이지만, generator를 사용하여 문서를 채우는 방법을 보여줌
참고
성능 비교
Conformance
Parsing Time
Parsing Memory
'언어 > C, C++' 카테고리의 다른 글
make, Makefile 정리 (0) | 2024.02.13 |
---|---|
[C++] stringstream (0) | 2024.01.02 |
json-c 정리 (1) | 2023.12.26 |
[C++] Standard Template Library - STL (0) | 2023.08.24 |
[C++] 객체 지향 프로그래밍 (0) | 2023.08.16 |