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

+ Recent posts