게임/라이브러리

rapidjson

MAKGA 2020. 7. 4. 15:52
320x100

공식 홈페이지 : https://rapidjson.org/

 

RapidJSON: Main Page

A fast JSON parser/generator for C++ with both SAX/DOM style API Tencent is pleased to support the open source community by making RapidJSON available. Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. Build status I

rapidjson.org

사용 이유 : 담당하는 프로젝트에서 구조체를 Binary로 통짜 파일 저장하던 방식을 사용했는데, 잦은 구조 변화로 인해 Json으로 저장하는게 더 낫다는 판단, C++에서 사용할 수 있는 Json 라이브러리를 찾아서 기록으로 남김.

 

 

각 헤더파일의 개념

 

allocators.h : 메모리 블록의 할당, 크기 조절 및 해제

cursorstreamwrapper.h : 오류가 발생했을 때 위치를 계산하기 위한 Cursor Stream Wrapper 제공

document.h : rapidjson을 사용할 때 가장 기본이 되는 Document(필수)

encodedstream.h : 템플릿 타입으로 스트림과 암호화/복호화 클래스를 받는 Wrapper 클래스 제공

encodings.h : 입/출력 스트림의 Encoding과 Decoding을 지원하는 클래스 제공

filereadstream : fread()를 활용해 받은 입력을 위한 파일 바이트 스트림 클래스 제공

filewritestream : fwrite()를 활용한 출력을 위한 C 파일 시스템 Wrapper 클래스 제공

memorystream : 메모리 내 입력 바이트 스트팀. 주로 EncodeInputStream/AutoUTFInputStream에 의해 랩핑됨.

rapidjson.h

 

 

 

C++ -> Json

 

기본적인 플레이어 클래스 구조

 

다음과 같이 간략히 나타낸 플레이어 구조가 있다고 할 때 Json으로 변환하는 것은 다음 GetJson()와 같이 멤버 변수에 대해 일일히 어떻게 저장될지 작성해주면 된다.

 

각 멤버에 대한 저장 방식

 

그리고 해당 함수를 호출하기 전까진 다음과 같다.

 

320x100

'게임 > 라이브러리' 카테고리의 다른 글

Recast & Detour  (1) 2021.11.11
flatbuffer  (0) 2021.10.23
glog  (0) 2021.08.29