jsoncpp的使用
因为项目需要,接触了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 参数就行。 需要注意两点: 1.按照上面的安装方法,需要执行下面命令更新库函数。因为没有执行ldconfig命令,导致程序在运行的时候找不到so文件,而so文件是一个动态链接库。我们必须用ldconfig来共享它。 2.不要将上面两个tar包解压到同一个目录下。不然可能会出现如下情况: File "/usr/lib/scons/SCons/Script/Main.py",line 1128,in _main ldconfig-v 使用: 参考下面网址: 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"}]}
#include"json/json.h" #include<iostream> using namespace std; int main(int argc,char** argv) { int arr[9] = {1,2,3,4,5,6,7,8,9}; char brr[9][12] = {"1","2","3","4","5","6","7","8","9"}; Json::Value root; Json::FastWriter fast; for(int i=0;i<9;i++) { Json::Value new_item; new_item.append(arr[i]); new_item.append(brr[i]); new_item.append(11); root["key_array"].append(new_item); } root["erro"] = Json::Value("0"); cout<<fast.write(root)<<endl; } 运行结果: {"erro":"0","key_array":[[1,"1",11],[2,[3,[4,[5,[6,[7,[8,[9,"9",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,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); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |