Jsoncpp Compiler、Programming
catalog
1. C++ jsoncpp簡(jiǎn)介 2. Jsoncpp的下載與編譯 3. Linux Jsoncpp的SDK編譯 & 簡(jiǎn)單實(shí)例 4. Windows Jsoncpp的SDK編譯 & 簡(jiǎn)單實(shí)例?
1. C++ jsoncpp簡(jiǎn)介
jsoncpp是c++解析JSON串常用的解析庫(kù)之一。其常用的類有
1. Json::Value: jsoncpp中最基本、最重要的類,用于表示各種類型的對(duì)象,jsoncpp支持的對(duì)象類型可見Json::ValueType枚舉值 2. Json::Reader: 用于讀取、將字符串轉(zhuǎn)換為Json::Value對(duì)象 3. Json::Writer: 一個(gè)純虛類,并不能直接使用。在此我們使用Json::Writer的子類1) Json::FastWriter2) Json::StyledWriter3) Json::StyledStreamWriterJsoncpp中所有對(duì)象、類名都在namespace json中,包含json.h即可
Relevant Link:
http://blog.csdn.net/fengshuiyue/article/details/8724204?
2. Jsoncpp的下載與編譯
1. 從gitbub上下載源代碼: https://codeload.github.com/open-source-parsers/jsoncpp/zip/master 2. unzip master 3. cd jsoncpp-master 4. scons platform=linux-gcc //gcc版本是4.8的,上面的命令執(zhí)行完后,會(huì)在./libs/linux-gcc-4.8目錄下面生成庫(kù)文件 -rw-r--r-- 1 root root 1068476 Jun 29 14:51 libjson_linux-gcc-4.8_libmt.a -rwxr-xr-x 1 root root 588508 Jun 29 14:51 libjson_linux-gcc-4.8_libmt.so* /* .so需要隨主程序下發(fā)到客戶端機(jī)器上,并添加到客戶端的include搜索路徑中 .a可以使用靜態(tài)編譯直接集成編譯到主程序中 */Relevant Link:
https://github.com/open-source-parsers/jsoncpp?
3. Linux Jsoncpp的SDK編譯 & 簡(jiǎn)單實(shí)例
0x1: 反序列化Json對(duì)象字符串
jscpp1.cpp
#include <iostream> #include <string> #include "json/json.h"int main(void) {std::string strValue = "{\"key1\":\"value1\",\"array\":[{\"key2\":\"value2\"},{\"key2\":\"value3\"},{\"key2\":\"value4\"}]}";Json::Reader reader;Json::Value value;if (reader.parse(strValue, value)){std::string out = value["key1"].asString();std::cout << out << std::endl;const Json::Value arrayObj = value["array"];for (int i = 0; i<arrayObj.size(); i++){out = arrayObj[i]["key2"].asString();std::cout << out;if (i != arrayObj.size() - 1)std::cout << std::endl;}}return 0; }編譯鏈接
g++ -o jsoncpp1 jscpp1.cpp -I/zhenghan/jsonCPP/jsoncpp-master/include /zhenghan/jsonCPP/jsoncpp-master/libs/linux-gcc-4.8/libjson_linux-gcc-4.8_libmt.a0x2: 序列化構(gòu)建Json對(duì)象
先構(gòu)建一個(gè)Json對(duì)象,此Json對(duì)象中含有數(shù)組,然后把Json對(duì)象序列化成字符串
jscpp2.cpp
編譯鏈接
g++ -o jsoncpp2 jsoncpp2.cpp -I/zhenghan/jsonCPP/jsoncpp-master/include /zhenghan/jsonCPP/jsoncpp-master/libs/linux-gcc-4.8/libjson_linux-gcc-4.8_libmt.aRelevant Link:
http://www.cnblogs.com/logicbaby/archive/2011/07/03/2096794.html http://www.cnblogs.com/xudong-bupt/p/3696329.html?
4. Windows Jsoncpp的SDK編譯 & 簡(jiǎn)單實(shí)例
0x1: 編譯鏈接
1. 下載jsoncpp 2. 解壓 3. 打開jsoncpp-src -> makefiles -> msvc2010 -> jsoncpp.sln 4. 分別選擇debug/released模式 5. 在"解決方案資源管理器"中右擊lib_json,選擇 -> 僅用于項(xiàng)目 -> 僅生成lib_json 6. 再次右擊lib_json,選擇 -> 僅用于項(xiàng)目 -> 僅鏈接lib_json 7. 生成的.lib文件夾在.\makefiles\msvc2010中最終生成windows下的.lib靜態(tài)鏈接庫(kù)文件
0x2: 簡(jiǎn)單示例
1. 在jsonCPP源代碼文件夾中創(chuàng)建文件夾include、lib 2. 在include中創(chuàng)建文件夾json,將jsoncpp-src -> include -> json 中的.h文件全部復(fù)制過來 3. 在lib中創(chuàng)建文件夾debug和release,把上一步編譯生成的.lib文件復(fù)制過來 //新建一個(gè)windows console控制臺(tái)項(xiàng)目 4. 選擇項(xiàng)目 -> 屬性 5. 選擇配置屬性 -> C/C++ -> 常規(guī),右邊的"附加包含目錄",附加包含目錄: D:\study\toolsForVS2010\jsonPP\include 6. 選擇配置屬性 -> C/C++ -> 代碼生成,右邊的"運(yùn)行庫(kù)",選擇MTd 7. 選擇配置屬性 -> 鏈接器 -> 常規(guī),右邊的"附加庫(kù)目錄",添加lib文件夾(靜態(tài)鏈接庫(kù))路徑 8. 選擇配置屬性 -> 鏈接器 -> 輸入,右邊的"附加依賴項(xiàng)",添加lib文件 9. 點(diǎn)擊應(yīng)用完成json配置 //若項(xiàng)目需要發(fā)布時(shí)(即項(xiàng)目選擇release) 10. 配置屬性 -> C/C++ -> 代碼生成,右邊的"運(yùn)行庫(kù)",選擇MT 11. 選擇配置屬性 -> 鏈接器 -> 常規(guī),右邊的"附加庫(kù)目錄",添加lib文件夾 12. 然后可以運(yùn)行程序獲得release版本程序main.cpp
// AliHealthExamination.cpp : 定義控制臺(tái)應(yīng)用程序的入口點(diǎn)。 // #include <fstream> #include <iostream> #include <string> #include "json/json.h" using namespace std; #pragma comment(lib,"lib_json") void main() { ifstream ifs; ifs.open("test.json", ios::out|ios::in); if(!ifs.is_open()) { cout<<"fail to open file."<<endl; return; } Json::Reader reader; Json::Value root; if(!reader.parse(ifs, root)) { cout<<"fail to parse."<<endl; return; } string s_name; int i_age; for(int i=0; i<root.size(); ++i) { s_name = root[i]["name"].asString(); i_age = root[i]["age"].asInt(); cout<<"name:"<<s_name.c_str()<<", "<<"age:"<<i_age<<endl; } }json文件與生成結(jié)果
1. json文件:[{"name":"kanguolai","age":25},{"name":"kanguoqu","age":18}] 2. 生成結(jié)果Relevant Link:
http://blog.csdn.net/guowenyan001/article/details/10378195 http://my.oschina.net/mjRao/blog/160672?
Copyright (c) 2015 LittleHann All rights reserved
?
轉(zhuǎn)載于:https://www.cnblogs.com/LittleHann/p/4607535.html
總結(jié)
以上是生活随笔為你收集整理的Jsoncpp Compiler、Programming的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: u盘怎么ntfs格式化 U盘如何NTFS
- 下一篇: JSON 分析数据格式