How To Install jsoncpp
C++에서 json을 사용해야할때 많은 라이브러리들이 있지만 가장 유명한 jsoncpp 라이브러리를 사용해보았다.
깃허브에 있는 jsoncpp의 공식 깃(https://github.com/open-source-parsers/jsoncpp)에서 클론을 뜬뒤
amalgamate.py 를 실행시키면 dist 폴더가 생기고 그안에 헤더 두개와 cpp파일 하나가 생성된다. dist.zip
#include "json/json.h" 를 선언해 include 하고 이 파일들을 사용할 cpp파일과 함께 컴파일하면 된다.
※ jsoncpp는 C++11 버전부터 사용 가능하다.
How To Use jsoncpp
read json
//test.json { "integer_key" : [ 1, 2, 3 ], "string_key" : [ "value1", "value2", "value3" ] } | cs |
//Read Json #include <iostream> #include <fstream> #include "json/json.h" using namespace std; int main() { Json::Value root; Json::Reader reader; ifstream json("test.json", ifstream::binary); reader.parse(json,root);//json >> root; 두 구문 모두 json을 파싱하는데 사용할 수 있다. //Json::Value 객체는 begin(), end() 둘다 정의되서 범위기반 for문도 사용 가능하다. for(auto& value:root) cout<<value<<endl; for(auto& value:root["string_key"]) cout<<value.asString()<<endl;//string으로 가져오기 for(auto& value:root["integer_key"]) cout<<value.asInt()<<endl;//integer로 가져오기 cout<<root.get("string_key","UTF-8");//get 함수를 통해 value를 가져올수도 있다. } | cs |
write json
//Write Json #include <iostream> #include <fstream> #include "json/json.h" using namespace std; int main(){ Json::Value root; Json::Value string_value; for (int i = 0; i < 3; i++) root["integer_key"].append(i+1); string_value["string"][0] = "value1"; string_value["string"][1] = "value2"; string_value["string"][2] = "value3"; string_value["cstring"][0] = "cvalue1"; string_value["cstring"][1] = "cvalue2"; string_value["cstring"][2] = "cvalue3"; root["string_key"] = (string_value);//append() 사용가능 ofstream outFile("test.json", ios::out); outFile << root; /* Json::StyledWriter writer; string json = writer.write(root); ofstream outFile("test.json", ios::out); outFile << json; */ } | cs |
//test.json { "integer_key" : [ 1, 2, 3 ], "string_key" : { "cstring" : [ "cvalue1", "cvalue2", "cvalue3" ], "string" : [ "value1", "value2", "value3" ] } } | cs |
좀더 구체적인 사용법 : http://open-source-parsers.github.io/jsoncpp-docs/doxygen/index.html#_advanced
'C&C++' 카테고리의 다른 글
Modern C++ (1) | 2018.10.02 |
---|---|
WINAPI How To Load Windows Tray Icon (0) | 2018.09.08 |
Get Window Focus On Other Window (0) | 2018.07.09 |
WINAPI Deny System Key Code (0) | 2018.06.26 |
"" , L"" , TEXT("") , _T("") (0) | 2018.06.15 |