c++的json库,jsoncpp安装和使用
一、cmake编译jsoncpp源码(1)下载jsoncpp源码源码地址:https://github.com/open-source-parsers/jsoncpp/tree/0.y.z(2)解压源码unzip jsoncpp-0.y.z.zipcd jsoncpp-0.y.z(3)使用cmake编译$ mkdir -p build/debug$ cd build/debug$ cmake -D
·
一、cmake编译jsoncpp源码
(1)下载jsoncpp源码
源码地址:https://github.com/open-source-parsers/jsoncpp/tree/0.y.z
(2)解压源码
-
unzip jsoncpp-0.y.z.zip
-
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}
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
已为社区贡献4条内容
所有评论(0)