cJSON和rapidjson開源庫解析資料
阿新 • • 發佈:2020-08-13
1、
rapidjson官網:http://rapidjson.org/zh-cn/
/* 解析JSON資料 並將解析的資料轉為 int型 入參: char* JSONInfo 待解析JSON資料 char* Key 待解析的JSON中Key 出參: int* Value 解析出的Value值 返回值:0成功;非0失敗 */ int JSONtoInt(char* JSONInfo,char* Key,int* Value) { //strReplace(JSONInfo," ",""); //去除空格 Document jsonDoc; rapidjson::Value::ConstMemberIterator root;View Codeif(!jsonDoc.HasMember(Key) ) { return 1; //json does not contain this element } jsonDoc.Parse<rapidjson::kParseDefaultFlags>(JSONInfo); * Value = jsonDoc.FindMember(Key)->value.GetInt(); /* cJSON * root = cJSON_Parse(JSONInfo);//將字串格式的json資料轉化為JSON物件格式 if(root == NULL) { //MessageBox("parse error\n"); return 1 ; } cJSON* value = cJSON_GetObjectItem(root,Key); if( value == NULL ) { //MessageBox("Get value error!"); return 1; } char stmp[1024] = {0}; sprintf(stmp,"%s",cJSON_Print(value)); strReplace(stmp,"\"",""); //去除雙引號 strReplace(stmp," ",""); //去除空格 *Value = atoi(stmp);*/ return PB_OK; } /* 解析JSON資料 並將解析的資料轉為 char* 入參: char* JSONInfo 待解析JSON資料 char* Key 待解析的JSON中Key 出參: char* Value 解析出的Value值 返回值:0成功;非0失敗 */ int JSONtoArray(char* JSONInfo,char* Key,char* Value) { //strReplace(JSONInfo," ",""); //去除空格 Document jsonDoc; rapidjson::Value::ConstMemberIterator root; jsonDoc.Parse<rapidjson::kParseDefaultFlags>(JSONInfo); if(!jsonDoc.HasMember(Key) ) { return 1; //json does not contain this element } CString aa = jsonDoc.FindMember(Key)->value.GetString(); strcpy(Value,aa.GetBuffer()); /* //cJSON 開源庫是C的,在CPP會存在載入預編譯等問題,會比較容易報錯,移植性不好 cJSON * root = cJSON_Parse(JSONInfo);//將字串格式的json資料轉化為JSON物件格式 if(root == NULL) { //MessageBox("parse error\n"); return 1 ; } cJSON* value = cJSON_GetObjectItem(root,Key); if( value == NULL ) { //MessageBox("Get value error!"); return 1; } char stmp[1024] = {0}; sprintf(stmp,"%s",cJSON_Print(value)); strReplace(stmp,"\"",""); //去除雙引號 strReplace(stmp," ",""); //去除空格 strcpy(Value,stmp); */ return PB_OK; }
2、
#include "cJSON.h" /* 解析JSON資料 並將解析的資料轉為 int型 入參: char* JSONInfo 待解析JSON資料 char* Key 待解析的JSON中Key 出參: int* Value 解析出的Value值 */ int JSONtoInt_cJSON(char* JSONInfo,char* Key,int* Value) { strReplace(JSONInfo," ",""); //去除空格 cJSON * root = cJSON_Parse(JSONInfo);//將字串格式的json資料轉化為JSON物件格式 if(root == NULL) { //MessageBox("parse error\n"); return 1 ; } cJSON* value = cJSON_GetObjectItem(root,Key); if( value == NULL ) { //MessageBox("Get value error!"); return 1; } char stmp[1024] = {0}; sprintf(stmp,"%s",cJSON_Print(value)); strReplace(stmp,"\"",""); //去除雙引號 strReplace(stmp," ",""); //去除空格 *Value = atoi(stmp); return 0; } /* 解析JSON資料 並將解析的資料轉為 char* 入參: char* JSONInfo 待解析JSON資料 char* Key 待解析的JSON中Key 出參: char* Value 解析出的Value值 */ int JSONtoArray_cJSON(char* JSONInfo,char* Key,char* Value) { cJSON * root = cJSON_Parse(JSONInfo);//將字串格式的json資料轉化為JSON物件格式 if(root == NULL) { //MessageBox("parse error\n"); return 1 ; } cJSON* value = cJSON_GetObjectItem(root,Key); if( value == NULL ) { //MessageBox("Get value error!"); return 1; } char stmp[1024] = {0}; sprintf(stmp,"%s",cJSON_Print(value)); strReplace(stmp,"\"",""); //去除雙引號 strReplace(stmp," ",""); //去除空格 strcpy(Value,stmp); return 0; }View Code