Linux下jsoncpp的编译与使用

一、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}

 

  • 9
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值