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);