一、cmake编译jsoncpp源码

(1)下载jsoncpp源码
源码地址:https://github.com/open-source-parsers/jsoncpp/tree/0.y.z
(2)解压源码

 
  1. unzip jsoncpp-0.y.z.zip

  2. cd jsoncpp-0.y.z

(3)使用cmake编译

$ mkdir -p build/debug

$ cd build/debug

$ cmake -DCMAKE_BUILD_TYPE=debug -DBUILD_STATIC_LIBS=ON -DBUILD_SHARED_LIBS=ON -DARCHIVE_INSTALL_DIR=. -G "Unix Makefiles" ../..

$ make

// 查看生成的静态和动态链接库

$ find . -name *.a

./src/lib_json/libjsoncpp.a

$ find . -name *.so

./src/lib_json/libjsoncpp.so

二、使用jsoncpp
(1)创建项目目录jsoncppUsage
(2)创建文件jsonCppUsage.cpp

// jsonCppUsage.cpp

#include <iostream>

#include "json/json.h"


using namespace std;


int main()

{

// 解析json串

string message = "{ \"data\" : { \"username\" : \"test\" }, \"type\" : 6 }";

Json::Reader reader(Json::Features::strictMode());

Json::Value parseData;

if (reader.parse(message.c_str(), parseData))

{

int type = parseData.get("type", 0).asInt();

Json::Value frameData = parseData.get("data", 0);

string username = frameData.get("username", 0).asString();

printf("type: %d, username: %s\n", type, username.c_str());

}


// 生成json串

Json::Value data;

Json::Value frame;

Json::FastWriter fastWriter;


frame["type"] = 66;

data["username"] = "test";

frame["data"] = data;


string result = fastWriter.write(frame);

printf("result: %s \n", result.c_str());


return 0;

}

(3)将jsoncpp头文件和生成的静态链接文件拷贝到项目目录(jsoncppUsage)

$ cp -rf jsoncpp-0.y.z/include jsoncppUsage

$ cp jsoncpp-0.y.z/build/debug/src/lib_json/libjsoncpp.a jsoncppUsage

$ tree jsoncppUsage/

jsoncppUsage/

├── include

│   └── json

│       ├── assertions.h

│       ├── autolink.h

│       ├── config.h

│       ├── features.h

│       ├── forwards.h

│       ├── json.h

│       ├── reader.h

│       ├── value.h

│       ├── version.h

│       └── writer.h

├── jsonCppUsage.cpp

└── libjsoncpp.a

$ g++ jsonCppUsage.cpp libjsoncpp.a -Iinclude

$ ./a.out 

type: 6, username: test

result: {"data":{"username":"test"},"type":66}

 

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐