cJson

1。 创建数组

string GetDataJson(int iErrCode, std::vector<std::array<char, Data_Len>> &vecData)
{	
	cJSON * resJson = NULL;
	resJson = cJSON_CreateObject();   //创建根数据对象
	cJSON_AddNumberToObject(resJson, "err_code", iErrCode);
	cJSON* pFeaJson = NULL;
	if (RES_SUCCESS == iErrCode)
	{
		const char **ppValues = (const char**)new char*[vecData.size()];
		for (int i = 0; i < vecData.size(); i++)
		{
			array<char, Data_Len> arrFData = vecData[i];
			char szBuf[Data_Len] = { '\0' };
			memcpy(szBuf, arrFData.data(), Data_Len);
			string strValue = Base64Encode(szBuf, Data_Len);			
			char* pBuf = (char*)malloc(strValue.length() + 1);
			memset(pBuf, '\0', strValue.length() + 1);
			memcpy(pBuf, strValue.c_str(), strValue.length());
			ppValues[i] = pBuf;
		}
		pFeaJson = cJSON_CreateStringArray(ppValues, vecData.size());
		cJSON_AddItemToObject(resJson, "feature", pFeaJson);
		//cJSON_Delete(pFeaJson);
		for (int i = 0; i < vecData.size(); i++)
		{
			free((void*)ppValues[i]);			
		}
		delete[]ppValues;
	}
	char *out = cJSON_Print(resJson);   //将json形式打印成正常字符串形式	
	//if (NULL != pFeaJson)
	//{
	//	cJSON_Delete(pFeaJson);
	//}
	cJSON_Delete(resJson);
	string strRsp = string(out);
	free(out);
	return strRsp;
}


2.注意内存泄漏

char *out = cJSON_Print(resJson) 要使用free释放,否则泄漏

cJSON * resJson = NULL;
resJson = cJSON_CreateObject();   //创建根数据对象要释放

cJSON_Delete(resJson);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值