1. 程式人生 > >C++ rapid JSON 簡單用法例項

C++ rapid JSON 簡單用法例項

 {
LOG(INFO) << "JsonString: " << JsonString;


std::string tlvdataString ="";
std::string signatureString ="";
auto  tlvLen =0;
auto iRet= -1;
auto signatureLen =0;
unsigned char *pTlvData = NULL;
unsigned char *pSignatureData = NULL;


rapidjson::Document doc; 


doc.Parse<0>(JsonString.c_str());  
if (doc.HasParseError())
{
LOG(ERROR)<<"GetParseError, ret=%s "<<doc.GetParseError();
return DOC_PARSE_ERROR;
}


rapidjson::Value& ConfigArray =doc[CONFIG_LIST];      


if (ConfigArray.IsArray())            
{
        for (int i = 0; i < ConfigArray.Size(); i++)
        {
rapidjson:: Value& object = ConfigArray[i];

if(object.HasMember(TEMPE6_LIST))
{
iRet= parseJsonE6List(object);
if(iRet != 0)
{
LOG(ERROR) << " parseJsonE6List error"<< " = " << iRet;
return iRet;
}
}
else
{
if(object.HasMember(TLV_STRING)){
if(object[TLV_STRING].IsString()){
tlvdataString = object[TLV_STRING].GetString();
tlvLen = tlvdataString.size();
}
}

if(object.HasMember(SIG_STRING)){
if(object[SIG_STRING].IsString()){
signatureString = object[SIG_STRING].GetString();
signatureLen = signatureString.size();
}
}
if ((tlvLen == 0)||(signatureLen == 0))
{
LOG(ERROR) << "JSON InPut Error tvLen: " << tlvLen<< "signatureLen" << signatureLen;
return MSG_ERROR; 
}
pTlvData = new unsigned char[tlvLen];
pSignatureData = new unsigned char[signatureLen];


IBCDValue::Asc2Bcd((const unsigned char *)tlvdataString.c_str(), tlvLen, pTlvData);
IBCDValue::Asc2Bcd((const unsigned char *)signatureString.c_str(), signatureLen, pSignatureData);


iRet= CLSS_ACI_UpdateConfig(pTlvData, (tlvLen+1)/2, pSignatureData, (signatureLen+1)/2);


delete [] pTlvData;
delete [] pSignatureData;


if(iRet != 0)
{
LOG(ERROR) << "CLSS_ACI_UpdateConfig Result: " << iRet;
return iRet;
}
}
}
}
else
{
LOG(ERROR) << "JSON format Error tvLen: "; 
return MSG_ERROR;
}
return 0;
}

相關推薦

C++ rapid JSON 簡單用法例項

 {LOG(INFO) << "JsonString: " << JsonString;std::string tlvdataString ="";std::string signatureString ="";auto  tlvLen =0;auto iRet= -1;auto si

position的簡單用法例項 ----- 方框裡圖片放對應的角標

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>position.html</tit

C++ Eigen的簡單用法

Eigen非常方便矩陣操作,當然它的功能不止如此,由於本人只用到了它的矩陣相關操作,所以這裡只給出了它的一些矩陣相關的簡單用法,以方便快速入門。矩陣操作在演算法研究過程中,非常重要,例如在影象處理中二維高斯擬合求取光斑中心時使用Eigen提供的矩陣演算法,差不多十來行

C++中priority_queue的簡單用法

soj isf htm lov sni osc coj dpt kml 6rwglt柯繳滔拐僖瓢http://shufang.docin.com/dhbp31536hted8m舜棺蠢訪棵料http://huiyi.docin.com/mqnqv574629sniu6澳刀飯疤

JSON簡單例項

var a= { "_id" : 1, "name" : "abc", "age" : 13, "color" : "WHITE", "birthday" : "2000-12-10" } { "_id" : 2, "name" : "ed

C++ char 和 string 簡單用法

直接上程式碼,編譯執行,跟著結果對比就好理解 #include<iostream> #include<string> #include<sstream> #include<cstring> #include <stdlib.h>

Eigen C++開源矩陣計算工具——Eigen的簡單用法

Eigen非常方便矩陣操作,當然它的功能不止如此,由於本人只用到了它的矩陣相關操作,所以這裡只給出了它的一些矩陣相關的簡單用法,以方便快速入門。矩陣操作在演算法研究過程中,非常重要,例如在影象處理中二維高斯擬合求取光斑中心時使用Eigen提供的矩陣演算法,差不多十來行程式碼即可實現,具體可見:http:

python--list,str,dict,json,tuple互換用法例項

這幾種型別比較常見,在這裡結合稍微總結一下。 1. list 轉 string str()方法不不能轉出list列表值,會包含其他無關符號如‘[',用join的方法會將列表元素分隔開。 2. string 轉 list 直接呼叫append方法插入list列表

C語言與matlab混合程式設計中mwArray的Get函式的簡單用法解釋

網上的通用示例: double data[4] = {1.0, 2.0, 3.0, 4.0}; double x; mwArray a(2, 2, mxDOUBLE_CLASS); a.SetData(data, 4); x = a.Get(1,1); // x = 1.0

C++ sort簡單用法

1.對基本型別的陣列從小到大排序 sort(陣列名+n1,陣列名+n2); tips:如果·n1=0,+n1可以不寫。將陣列中下標範圍[n1,n2)的元素從小到大排序。n2元素不在排序區間內。 int a[]={6,3,1,5,2,0,4}; sort(a,a+7);//對整個陣列從小到大排序 so

C++ vector和iterator簡單用法

vector是動態可變陣列,可以新增int、double、自定義的類 1.int示例: #incldue<vector> vector<int> a; a.push_back(1); a.push_back(2); a.push_ba

C#呼叫oracle儲存過程最簡單例項

              OracleParameter[] parameters={                                  new OracleParameter("paramin",OracleType.VarChar,20),                       

簡單的freemarker用法例項

      1.下載freemarker-2.3.19.jar到web專案的lib下。 2.新建freemarker引擎協助類 package com.bxsurvey.sys.process.util; import java.io.S

c++ eigen 簡單用法

 //for (int i = 0; i < fileParse->frame_count; i++)   //{   //  bool left_foot_contact = NCGetContactState(index, i, 6);   //  bool

C# LitJson Json序列化簡單使用

Model public class point { public string name{ get; set;} public string age{ get; set;}

C++ pair的用法例項詳解(結構體模板應用初探)

1 pair的應用(結構體模板)pair是將2個數據組合成一個數據,當需要這樣的需求時就可以使用pair,如stl中的map就是將key和value放在一起來儲存。另一個應用是,當一個函式需要返回2個數據的時候,可以選擇pair。標頭檔案:#include<utilit

VS2008中C#開發webservice簡單例項

1.建立工程 檔案-> 新建->網站 如下圖。   工程建好後,會自動新增如下程式碼: 1 using System; 2 using System.Linq; 3 using System.Web; 4 using System.Web.S

Linux下C++呼叫Java簡單例項(jni)

假設工作目錄為/home1. Java端1)  mkdir leixf && cd leixf2) 建立SubClass.java檔案,內容如下:package leixf;public class SubClass {private String name

C++ MFC 計時器(OnTimer)的用法例項

1、”點選“跳轉介面的程式碼: // TODO:  在此新增控制元件通知處理程式程式碼  MyLog td;  td.DoModal(); 2、點選後,在另一個介面中顯示如下介面,文字框中的數字依次升高 (1)在介面中新增文字框,計時器 在視窗中右鍵 (2)新增文字框

C語言結構體的簡單使用例項

程式碼 #include <stdio.h> #include <stdlib.h> #include <pthread.h> struct s1{