linux下C++/ json库的编译及例程

一、

安装Json库

1、下载JsonCpp 
http://sourceforge.net/projects/jsoncpp/files/ 
2、下载scons 
http://sourceforge.net/projects/scons/files/scons/2.1.0/scons-2.1.0.tar.gz/download

3、解压scons-2.1.0.tar.gz

tar -zvxf scons-2.1.0.tar.gz 
我的解压到了/opt/JSON/scons-2.1.0目录下了

4、进入到解压目录scons-2.1.0下面,执行命令:

sudo Python setup.py install

5、解压jsconcpp

tar -zvxf jsoncpp-src-0.5.0.tar.gz 
我的解压到了/opt/JSON/jsoncpp-src-0.5.0下

6、进入到jsoncpp解压目录下,执行命令:

sudo scons platform=Linux-gcc

7、将/jsoncpp-src-0.5.0/include/目录下的json文件夹拷贝到/usr/include/ 
8、将jsoncpp-src-0.5.0/libs/linux-gcc-4.9.1/目录下的libjson_linux-gcc-4.9.1_libmt.a 拷贝到/usr/local/lib/下,并为了方便使用,将其重命名为libjson.a

8、测试代码

//json.cpp
#include<iostream>
#include<json/json.h>

using namespace std;

int main()
{
    string test="{\"id\":1,\"name\":\"kurama\"}";
    Json::Reader  reader;
    Json::Value   value;

    if(reader.parse(test,value))
    {
        if(!value["id"].isNull())
        {
            cout<<value["id"].asInt()<<endl;
            cout<<value["name"].asString()<<endl;
        }
    }
    return 0;
}

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

编译:需指定链接库(刚才重命名后的那个文件):

g++ json.cpp -ljson

输出: 
这里写图片描述

“以上是综合网上多篇文章整理的,在此记录,防止遗忘”

基本使用示例

    int       mark = 1;
    string    pwd("123456");

    //json的字符串格式
    string test="{\"id\":1,\"name\":\"kurama\"}";

    //reader用于将字符串格式转化为json
    Json::Reader  reader;
    //定义json变量
    Json::Value   value;

    if(reader.parse(test,value))//字符串转json
    {
        if(!value["id"].isNull())
        {
            cout<<value["id"].asInt()<<endl;
            //asString()用于转化为string,直接输出是带双引号的
            cout<<value["name"].asString()<<endl;
        }
    }

    Json::Value  json;
    //初始化json
    json["mark"] = Json::Value(mark);
    json["pass"] = Json::Value(pwd);

    cout<<json["mark"].asInt()<<json["pass"].asString()<<endl;

    string   s;
    //json转字符串
    s = json.toStyledString();

    cout<<s<<endl;
    Json::Value  js;
    reader.parse(s,js);
    cout<<js["pass"].asString()<<endl;

    //转化为不带格式的字符串
    Json::FastWriter writer;  
    std::string out = writer.write(js);  


二、

从(http://jsoncpp.sourceforge.net/)下载源码包“jsoncpp-src-0.5.0.tar.gz”,解压后在其解压后目录中运行

$ scons platform=linux-gcc
  编译出来的库文件在其libs/ linux-gcc-4.4.2目录下,有libjson_linux-gcc-4.4.2_libmt.so和libjson_linux-gcc-4.4.2_libmt.a。头文件在解压目录下的include中。我的jsoncpp安装在$HOME/usr/jsoncpp下。
$ mkdir ~/usr/jsoncpp
$ cp -r include ~/usr/jsoncpp

$ cp -r libs ~/usr/jsoncpp

[cpp]  view plain  copy
  1. /* 
  2.  * test.cpp 
  3.  * 
  4.  *  Created on: 2011-9-1 
  5.  *      Author: will 
  6.  */  
  7. #include <iostream>  
  8. #include <string>  
  9.   
  10. #include "json/json.h"  
  11.   
  12. using namespace std;  
  13.   
  14. int main(void)  
  15. {  
  16.     Json::Value root;  
  17.     Json::FastWriter fast;  
  18.     root["ModuleType"] = Json::Value("你好");  
  19.   
  20.     root["ModuleCode"] = Json::Value("22");  
  21.   
  22.     root["ModuleDesc"] = Json::Value("33");  
  23.   
  24.     root["DateTime"] = Json::Value("44");  
  25.   
  26.     root["LogType"] = Json::Value("55");  
  27.     cout<<fast.write(root)<<endl;  
  28.      return 0;  
  29. }  
输出信息:
[cpp]  view plain  copy
  1. {"DateTime":"44","LogType":"55","ModuleCode":"22","ModuleDesc":"33","ModuleType":"你好"}  
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值