zoukankan      html  css  js  c++  java
  • 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
    ");
            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
    ");
            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;
    }
    View Code

    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
    ");
            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
    ");
            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
  • 相关阅读:
    vi 编辑内容中查找字符位置
    使用 Oracle GoldenGate 在 Microsoft SQL Server 和 Oracle Database 之间复制事务
    EBS R12 更改SYSADMIN密码
    两种步骤 更改 EBS R12界面LOGO以及内容
    Get Current LOV Query SQL
    Oracle Gateways透明网关访问SQL Server
    Oracle 数据集成的实际解决方案
    将SQLServer2005中的数据同步到Oracle中
    ogg实现oracle到sql server 2005的同步
    wince和window mobile winphone
  • 原文地址:https://www.cnblogs.com/kwinwei/p/13159408.html
Copyright © 2011-2022 走看看