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

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

C++構造和解析Json的使用示例

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

概述

JSON是一種輕量級的數據交互格式,易于人閱讀和編寫,同時也易于機器解析和生成,并有效地提升網絡傳輸效率,實際項目中經常用到,相比xml有很多優點,問問度娘,優點一籮筐。

第三方庫

json解析選用jsoncpp作為第三方庫,jsoncpp使用廣泛,c++開發首選。

jsoncpp目前已經托管到了github上,地址:https://github.com/open-source-parsers/jsoncpp

使用

使用c++進行構造json和解析json,選用vs2010作為IDE。工程中使用jsoncpp的源碼進行編譯,沒有使用jsoncpp的庫,為方便大家使用把dll和lib庫也放到了我的工程jsoncpplib文件夾下,有需要的可以直接引用庫。

待解析的json數據格式如下圖:

/********************************************************Copyright (C), 2016-2017,FileName: mainAuthor: woniu201Description:use jsoncpp src , not use dll, but i also provide dll and lib.********************************************************/#include "stdio.h"#include <string>#include "jsoncpp/json.h"using namespace std;/************************************@ Brief: read file@ Author: woniu201 @ Return: file data ************************************/char *getfileAll(char *fname){ FILE *fp; char *str; char txt[1000]; int filesize; if ((fp=fopen(fname,"r"))==NULL){ printf("open file %s fail /n",fname); return NULL; } fseek(fp,0,SEEK_END);  filesize = ftell(fp); str=(char *)malloc(filesize); str[0]=0; rewind(fp); while((fgets(txt,1000,fp))!=NULL){ strcat(str,txt); } fclose(fp); return str;}/************************************@ Brief: write file@ Author: woniu201 @ Return:   ************************************/int writefileAll(char* fname,const char* data){ FILE *fp; if ((fp=fopen(fname, "w")) == NULL) { printf("open file %s fail /n", fname); return 1; } fprintf(fp, "%s", data); fclose(fp); return 0;}/************************************@ Brief: parse json data@ Author: woniu201 @ Return:   ************************************/int parseJSON(const char* jsonstr){ Json::Reader reader; Json::Value resp; if (!reader.parse(jsonstr, resp, false)) { printf("bad json format!/n"); return 1; } int result = resp["Result"].asInt(); string resultMessage = resp["ResultMessage"].asString(); printf("Result=%d; ResultMessage=%s/n", result, resultMessage.c_str()); Json::Value & resultValue = resp["ResultValue"]; for (int i=0; i<resultValue.size(); i++) { Json::Value subJson = resultValue[i]; string cpuRatio = subJson["cpuRatio"].asString(); string serverIp = subJson["serverIp"].asString(); string conNum = subJson["conNum"].asString(); string websocketPort = subJson["websocketPort"].asString(); string mqttPort = subJson["mqttPort"].asString(); string ts = subJson["TS"].asString(); printf("cpuRatio=%s; serverIp=%s; conNum=%s; websocketPort=%s; mqttPort=%s; ts=%s/n",cpuRatio.c_str(), serverIp.c_str(),  conNum.c_str(), websocketPort.c_str(), mqttPort.c_str(), ts.c_str()); } return 0;}/************************************@ Brief: create json data@ Author: woniu201 @ Return:   ************************************/int createJSON(){ Json::Value req; req["Result"] = 1; req["ResultMessage"] = "200"; Json::Value object1; object1["cpuRatio"] = "4.04"; object1["serverIp"] = "42.159.116.104"; object1["conNum"] = "1"; object1["websocketPort"] = "0"; object1["mqttPort"] = "8883"; object1["TS"] = "1504665880572"; Json::Value object2; object2["cpuRatio"] = "2.04"; object2["serverIp"] = "42.159.122.251"; object2["conNum"] = "2"; object2["websocketPort"] = "0"; object2["mqttPort"] = "8883"; object2["TS"] = "1504665896981"; Json::Value jarray; jarray.append(object1); jarray.append(object2); req["ResultValue"] = jarray; Json::FastWriter writer; string jsonstr = writer.write(req); printf("%s/n", jsonstr.c_str()); writefileAll("createJson.json", jsonstr.c_str()); return 0;}int main(){ char* json = getfileAll("parseJson.json"); parseJSON(json); printf("===============================/n"); createJSON(); getchar(); return 1;}

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對武林網的支持。如果你想了解更多相關內容請查看下面相關鏈接

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 嘉黎县| 石景山区| 车险| 平顺县| 石景山区| 宝丰县| 文山县| 宜兰市| 宜兴市| 潜山县| 盐源县| 上蔡县| 当涂县| 彰武县| 佛坪县| 萨嘎县| 湘阴县| 太原市| 富顺县| 精河县| 大余县| 施甸县| 永宁县| 交城县| 红桥区| 大化| 博罗县| 渭南市| 吉水县| 视频| 镇宁| 宝清县| 交城县| 全州县| 赣榆县| 孝感市| 永川市| 浦县| 鸡西市| 白沙| 紫金县|