C 應用之解析json

2021-08-20 20:04:57 字數 2177 閱讀 1214

多個json庫比較:

符合標準程度(越高越好):

解析至dom的時間(越低越好):

把dom生成含換行及縮排的json的時間(越低越好):

可執行檔案(把json解析至dom,然後統計json型別)的大小(越低越好):

推薦rapidjson:

// rapidjson/example/******dom/******dom.cpp`

#include "rapidjson/document.h"

#include "rapidjson/writer.h"

#include "rapidjson/stringbuffer.h"

#include using namespace rapidjson;

int main() ";

document d;

d.parse(json);

// 2. modify it by dom.

value& s = d["stars"];

s.setint(s.getint() + 1);

// 3. stringify the dom

stringbuffer buffer;

writerwriter(buffer);

d.accept(writer);

// output

std::cout << buffer.getstring() << std::endl;

return 0;

}

但方便性來說boost是最方便的:

官方文件:

簡單使用:

多用途:

#include #include const std::string file_path = "c:\\test.txt";

void generate_user()

void read_user()},

"2" : ,

"3" :

}}//將json串寫入string

boost::property_tree::ptree item;

item.put("a", 2);

std::stringstream is;

boost::property_tree::write_json(is, item);

std::string s = is.str();

//從string中解析json串

std::string c;//c為json串

std::istringstream iss;

iss.str(c);

boost::property_tree::ptree item;

boost::property_tree::json_parser::read_json(iss, item);

int n = item.get("a");

/*1. 用boost::property_tree解析字串遇到"\/"時解析失敗,而jsoncpp可以解析成功,要知道'/'前面加乙個'\'是json標準格式。

2. boost::property_tree的read_json和write_json在多執行緒中使用會引起崩潰。

針對1,可以在使用boost::property_tree解析前寫個函式去掉"\/"中的'\',針對2,在多執行緒中同步一下可以解決。

我的使用心得:使用boost::property_tree不僅可以解析json,還可以解析xml,info等格式的資料。對於解析json,

使用boost::property_tree解析還可以忍受,但解析xml,由於遇到問題太多只能換其它庫了。

*/

ExtJS grid簡單應用之 展示JSON資料

grid功能 展示json資料,編輯行,排序,分頁.分頁功能要根據請求url的引數,在伺服器端返回相應json,此處服務端未寫.url引數,可通過firebug控制台檢視 1,首先引用 extjs檔案 extjs樣式檔案 2.前端 ext.onready function 定義資料集 var sto...

json 檔案解析與應用

第一步 首先弄乙個 json 檔案 我這裡成為 config.json 內容如下 1001 第二步 新增解析 json 檔案的函式 記得 首先宣告乙個全域性的 map 容器 或者成員的 map 容器map fortext int helloworld parse json for csjson va...

C 解析JSON陣列

待解析json陣列 函式 1 public static newtonsoft.json.linq.jarray gettojsonlist string json 2實現 搞定 我使用的是這個 只需將json放到這個 自動給我們生成實體類即可 實體類 1 using system 2 using ...