码迷,mamicode.com
首页 > Web开发 > 详细

jsoncpp的使用

时间:2015-07-24 12:58:46      阅读:230      评论:0      收藏:0      [点我收藏+]

标签:jsoncpp   c++   linux   

因为项目需要,接触了jsoncpp,但是在网上找了很多资料都没有自己想要的,就决定写下这篇文章。

开发环境:Linux

当然这个对windows也是一样适用的。

使用jsoncpp时需要安装两个包jsoncpp 和 scons,我选择的是jsoncpp-src-0.5.0-rc2-amalgamation.tar 和 scons-2.1.0.tar,这个在网上面一大堆。

安装的过程:

参考下面网址:

http://blog.sina.com.cn/s/blog_752aac070101cnfr.html

将jsoncpp-src-0.5.0-rc2-amalgamation.tar 文件解压后,可以直接将里面json的文件放在/usr/include这个目录下,将libjson_linux-gcc-4.1.2_libmt.a   libjson_linux-gcc-4.1.2_libmt.so这个两个库文件放在/usr/bin文件下,并将 libjson_linux-gcc-4.1.2_libmt.so这个改名为libjson.so。在使用json.h,编译的时候,加上 -ljson 参数就行。

使用:

参考下面网址:

http://blog.csdn.net/wangchangshuai0010/article/details/18180223

http://www.cppblog.com/wanghaiguang/archive/2013/12/26/205020.html

例子:

这个是我在Linux上编译通过的一段代码:

#include"json/json.h"
#include<iostream>
using namespace std;
int main(int argc, char** argv)
{
        Json::Value root;
        Json::FastWriter fast;


        Json::Value arrayObj;   // 构建对象
        Json::Value new_item, new_item1;
        new_item["date"] = "2011-11-11";
        new_item["hello"] = "nihao";
        new_item1["time"] = "11:11:11";
      arrayObj.append(new_item);  // 插入数组成员
        arrayObj.append(new_item1); // 插入数组成员
        root["股票信息"] = arrayObj;
        cout<<fast.write(root)<<endl;
}
编译
链接:

g++ jsontext.cpp -ljson

运行结果:

{"股票信息":[{"date":"2011-11-11","hello":"nihao"},{"time":"11:11:11"}]}


下面这个是我在项目中截取的循环生成jsoncpp的代码,仅供参考:

string CHttpReactor::JsonKlinePack(int nOrigDataLen,char *psData)
{
Json::Value root;
Json::FastWriter fast;
Json::Value arrayObj; // 构建对象

char *pData = psData;
int iCount = 0;
char stockKey[8] = "";
    int iRecvLen = nOrigDataLen;

    if (iRecvLen < sizeof(int) + 7) 
{
return "";
    }
memcpy(stockKey, pData, 7);
pData += 7;
    memcpy(&iCount, pData, sizeof(int));
    pData += sizeof(int);
    iRecvLen -= sizeof(int) + 7;


cout << "股票索引 = " << stockKey << endl;
cout << "股票个数 = " << iCount << endl;
root["StockKey"] = Json::Value(stockKey);
root["Count"] = Json::Value(iCount);


HQMsgRKline *pMsgRKline = NULL;


for(int i=0; i<iCount; i++)
{
if(iRecvLen < sizeof(HQMsgRKline))
break ;
Json::Value json_temp;
pMsgRKline = (HQMsgRKline *)pData;
json_temp["Amount"] = Json::Value(pMsgRKline->m_dAmount);
json_temp["Volumn"] = Json::Value(pMsgRKline->m_dVolumn);
json_temp["Close"] = Json::Value(pMsgRKline->m_fClose);
json_temp["High"] = Json::Value(pMsgRKline->m_fHigh);
json_temp["Low"] = Json::Value(pMsgRKline->m_fLow);
json_temp["Open"] = Json::Value(pMsgRKline->m_fOpen);
json_temp["Yesterday"] = Json::Value(pMsgRKline->m_fYesterday);
json_temp["Date"] = Json::Value(pMsgRKline->m_nDate);
arrayObj.append(json_temp);  // 插入数组成员
root["港股K线数据"] = arrayObj;

pData += sizeof(HQMsgRKline);
iRecvLen -= sizeof(HQMsgRKline);
}
return fast.write(root);
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

jsoncpp的使用

标签:jsoncpp   c++   linux   

原文地址:http://blog.csdn.net/u012654882/article/details/47036681

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!