国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

C++使用JsonCpp庫操作json格式數據示例

2020-01-26 14:05:13
字體:
來源:轉載
供稿:網友

本文實例講述了C++使用JsonCpp庫操作json格式數據的方法。分享給大家供大家參考,具體如下:

前言

JSON是一個輕量級的數據定義格式,比起XML易學易用,而擴展功能不比XML差多少,用之進行數據交換是一個很好的選擇

JSON的全稱為:JavaScript Object Notation ,顧名思義,JSON是用于標記javascript對象的,詳情參考http://www.json.org/

本文選擇第三方庫JsonCpp來解析json,JsonCpp是比較出名的c++解析庫,在json官網也是首推的。

JsonCpp簡介

JsonCpp主要包含三種類型的class:Value Reader Writer。

jsoncpp中所有對象、類名都在namespace json中,包含json.h即可。

注意: Json::Value只能處理ANSI類型的字符串,如果C++程序使用Unicode編碼的,最好加一個Adapt類來適配。

下載和編譯

本文運行環境是: Redhat 5.5 + g++version 4.6.1 +  GNU Make 3.81 + jsoncpp-0.5.0

下載地址是:http://sourceforge.net/projects/jsoncpp/

解壓之后得到jsoncpp-src-0.5.0文件夾,我們只需要jsoncpp的頭文件和cpp文件,其中jsonscpp的頭文件位于jsoncpp-src-0.5.0/include/json,jsoncpp的cpp文件位于jsoncpp-src-0.5.0/src/lib_json。

這里我列出我們的工作目錄:

jsoncpp/           //工作目錄
|-- include        //頭文件根目錄
|  |-- json       //json頭文件,對應jsoncpp-src-0.5.0/include/json
|-- src            //cpp源碼文件根目錄
  |-- json       //jsoncpp源碼文件,對應jsoncpp-src-0.5.0/src/lib_json
  |-- main.cpp   //我們的主函數,調用jsoncpp的示例代碼
|-- makefile       //makefile,不用我們多說了吧,不懂請看本站相關的makefile用法實踐

反序列化Json對象

假設有一個json對象如下:

{  "name": "json″,  "array": [    {      "cpp": "jsoncpp"    },    {      "java": "jsoninjava"    },    {      "php": "support"    }  ]}

我們要實現這個json的反序列號代碼如下:

void readJson() {  using namespace std;  std::string strValue = "{/"name/":/"json/",/"array/":[{/"cpp/":/"jsoncpp/"},{/"java/":/"jsoninjava/"},{/"php/":/"support/"}]}";  Json::Reader reader;  Json::Value value;  if (reader.parse(strValue, value))  {    std::string out = value["name"].asString();    std::cout << out << std::endl;    const Json::Value arrayObj = value["array"];    for (unsigned int i = 0; i < arrayObj.size(); i++)    {      if (!arrayObj[i].isMember("cpp"))        continue;      out = arrayObj[i]["cpp"].asString();      std::cout << out;      if (i != (arrayObj.size() - 1))        std::cout << std::endl;    }  }}

序列化Json對象

void writeJson() {  using namespace std;  Json::Value root;  Json::Value arrayObj;  Json::Value item;  item["cpp"] = "jsoncpp";  item["java"] = "jsoninjava";  item["php"] = "support";  arrayObj.append(item);  root["name"] = "json";  root["array"] = arrayObj;  root.toStyledString();  std::string out = root.toStyledString();  std::cout << out << std::endl;}

完整實例代碼點擊此處本站下載

下載之后,執行以下命令

unzip jsoncpp.zipcd jsoncppmake./main

PS:關于json操作,這里再為大家推薦幾款比較實用的json在線工具供大家參考使用:

在線JSON代碼檢驗、檢驗、美化、格式化工具:
http://tools.VeVB.COm/code/json

JSON在線格式化工具:
http://tools.VeVB.COm/code/jsonformat

在線XML/JSON互相轉換工具:
http://tools.VeVB.COm/code/xmljson

json代碼在線格式化/美化/壓縮/編輯/轉換工具:
http://tools.VeVB.COm/code/jsoncodeformat

在線json壓縮/轉義工具:
http://tools.VeVB.COm/code/json_yasuo_trans

希望本文所述對大家C++程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 霍林郭勒市| 汉川市| 灯塔市| 高阳县| 铅山县| 巫溪县| 池州市| 舒城县| 定州市| 专栏| 独山县| 崇义县| 泽普县| 同江市| 高安市| 金阳县| 雷波县| 阆中市| 万山特区| 焦作市| 平果县| 大安市| 隆化县| 铅山县| 定安县| 灵石县| 宜州市| 高雄县| 宜昌市| 中西区| 江都市| 兴化市| 井陉县| 玉环县| 德安县| 固镇县| 吉木萨尔县| 手机| 龙泉市| 吴川市| 清水县|