首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> C++ 入門

C++ 中使用 JSON:jsoncpp 庫完整指南

     編輯:C++ 入門

簡介

JSON (JavaScript Object Notation) 是輕量級數據交換格式。C++ 無內建支持,推薦使用 jsoncpp 庫(官方首推)。

環境搭建

  1. 下載:jsoncpp 0.5.0
  2. Windows 編譯:打開 `makefiles/vs71/jsoncpp.sln`,VS2003/2005/2010 均可轉換編譯
  3. 建議編譯為靜態庫,直接鏈接,避免 DLL 部署麻煩

核心類

  • Json::Value:表示任意類型 JSON 值(object, array, string, number, bool, null)
  • Json::Reader:解析 JSON 字符串為 Value
  • Json::Writer:將 Value 序列化為字符串(FastWriter/StyledWriter/StyledStreamWriter)

構建 JSON

Json::Value root;
root["key_string"] = "value_string";
root["key_number"] = 12345;
root["key_boolean"] = false;
root["key_double"] = 12.345;
root["key_object"]["age"] = 26;
root["key_object"]["name"] = "huchao";
root["key_array"].append("array_string");
root["key_array"].append(1234); // 數組元素可異構

序列化輸出

// 緊湊格式
Json::FastWriter fw;
cout << fw.write(root) << endl;
// 輸出:{"key_array":["array_string",1234],"key_boolean":false,...}

// 格式化輸出
Json::StyledWriter sw;
cout << sw.write(root) << endl;
// 輸出:縮進換行的可讀格式

解析 JSON

Json::Reader reader;
Json::Value obj;
const char* json = "{\"age\":26,\"name\":\"huchao\"}";
if (reader.parse(json, obj)) {
    cout << obj["name"].asString() << endl; // huchao
    cout << obj["age"].asInt() << endl;     // 26
}

Unicode 注意事項

jsoncpp 僅支持 ANSI 字符串。若項目用 Unicode (wchar_t),需編寫適配層轉換編碼。

常用操作速查

操作代碼
判斷類型val.type() == Json::objectValue
檢查鍵存在val.isMember("key")
獲取數組大小val.size()
遍歷對象for (auto it = val.begin(); it != val.end(); ++it)
清空val.clear()
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved