Jsoncpp的使用
C++要使用JSON來解析資料,一般採用jsoncpp.
網站:http://sourceforge.net/projects/jsoncpp/
下載了之後,解壓,然後開啟\jsoncpp-src-0.5.0\jsoncpp-src-0.5.0\makefiles\vs71
下的工程檔案,進行編譯連結就可以得到一個靜態連結庫json.lib
要用jsoncpp只需要將這個lib檔案拷貝到你的工程目錄下,並將jsoncpp-src-0.5.0\jsoncpp-src-0.5.0\include\json
複製到工程目錄下,然後將這些標頭檔案加到工程中去就可以了。
例子:
{
"name" : "小樓一夜聽春雨",
"age" : 27
}
#pragma comment(lib, "json_mtd.lib")
#include <fstream>
#include <cassert>
#include "json/json.h"
int main()
{
ifstream ifs;
ifs.open("testjson.json");
assert(ifs.is_open());
Json::Reader reader;
Json::Value root;
if (!reader.parse(ifs, root, false))
{
return -1;
}
std::string name = root["name"].asString();
int age = root["age"].asInt();
std::cout<<name<<std::endl;
std::cout<<age<<std::endl;
return 0;
}
[{"name" : "xiaoy", "age" :17} , {"name" : "xiaot", "age" : 20}]
#pragma comment(lib, "json_mtd.lib")
#include <fstream>
#include <cassert>
#include "json/json.h"
int main()
{
ifstream ifs;
ifs.open("testjson.json");
assert(ifs.is_open());
Json::Reader reader;
Json::Value root;
if (!reader.parse(ifs, root, false))
{
return -1;
}
std::string name;
int age;
int size = root.size();
for (int i=0; i<size; ++i)
{
name = root[i]["name"].asString();
age = root[i]["age"].asInt();
std::cout<<name<<" "<<age<<std::endl;
}
return 0;
}
json寫入:
#pragma comment(lib, "json_mtd.lib")
#include <fstream>
#include <cassert>
#include "json/json.h"
int main()
{
Json::Value root;
Json::FastWriter writer;
Json::Value person;
person["name"] = "hello world";
person["age"] = 100;
root.append(person);
std::string json_file = writer.write(root);
ofstream ofs;
ofs.open("test1.json");
assert(ofs.is_open());
ofs<<json_file;
return 0;
}
結果:[{"age":100,"name":"hello world"}]
json對陣列的解析還支援STL的風格。
Json::Value::Members member;//Members 這玩意就是vector<string>,typedef了而已
for (Json::Value::iterator itr = objArray.begin(); itr != objArray.end(); itr++)
{
member = (*itr).getMemberNames();
for (Json::Value::Members::iterator iter = member.begin(); iter != member.end(); iter++)
{
string str_temp = (*itr)[(*iter)].asString();
}
}
即此種風格與上面的類似,只是上面的只是取"text"節點,而後一種是輸出所有節點。
相關文章
- 使用jsoncpp解析jsonJSON
- C++中使用JsonCppC++JSON
- 5、JsonCpp簡單使用(1)JSON
- 初探JsonCpp - 編譯與基本使用JSON編譯
- jsoncpp 介紹JSON
- jsoncpp空陣列JSON陣列
- jsoncpp簡單示例JSON
- gdb 檢視 jsoncpp物件JSON物件
- jsoncpp在linux編譯JSONLinux編譯
- mingw編譯jsoncpp 轉載編譯JSON
- jsoncpp按寫入順序讀取JSON
- Windows10 VS2017 C++ Json解析(使用jsoncpp庫)WindowsC++JSON
- jsoncpp linux平臺編譯和arm移植JSONLinux編譯
- Scrapy框架的使用之Scrapyrt的使用框架
- Docker框架的使用系列教程(四)容器的使用Docker框架
- Docker的使用Docker
- pip 的使用
- Redis的使用Redis
- MongoDB的使用MongoDB
- mysql的使用MySql
- Typeof的使用
- iview 的使用View
- git的使用Git
- IntentService的使用Intent
- RestTemplate的使用REST
- lombok的使用Lombok
- MybatisGenerator的使用MyBatis
- elasticsearch的使用Elasticsearch
- SVG 的使用SVG
- sqlmap的使用SQL
- Promise的使用Promise
- git 的使用Git
- postman的使用Postman
- git的使用+Git
- joomla的使用OOM
- Nginx的使用Nginx
- SwitchHosts的使用
- pipenv 的使用