cJSON和rapidjson开源库解析数据
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; if(!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; }