色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

c json轉為實體類

謝彥文2年前7瀏覽0評論

在C語言開發中,經常需要將JSON格式的數據轉化為實體類,方便對數據進行操作和管理。本文介紹使用C語言如何將JSON轉為實體類。

首先需要使用一個開源的JSON解析庫,比如cjson,在GitHub上就有對應的代碼。

cJSON * root = cJSON_Parse(jsonData);//將json轉化為cjson格式的結構體
if (root == NULL)//解析錯誤
{
printf("Parsing Error:%s\n", cJSON_GetErrorPtr());
return;
}
data->id = cJSON_GetObjectItem(root, "id")->valueint;
sprintf(data->name,"%s", cJSON_GetObjectItem(root, "name")->valuestring);
data->age = cJSON_GetObjectItem(root, "age")->valueint;
data->height = cJSON_GetObjectItem(root, "height")->valuedouble;
cJSON_Delete(root);//釋放內存

上述代碼示例中,首先使用cJSON_Parse函數將jsonData轉化為cjson格式的結構體,然后通過cJSON_GetObjectItem函數獲取json對應的值,轉化為實體類的屬性值,最后使用cJSON_Delete函數釋放內存。

當然,對于復雜的JSON數據,需要使用遞歸函數進行處理。比如下面這個示例中,JSON數據中包含數組。

cJSON *root=cJSON_Parse(data);
if (!root)
{
printf("Error before: [%s]\n", cJSON_GetErrorPtr());
return -1;
}
cJSON * arrayItem = cJSON_GetObjectItem(root,"array");
if (arrayItem == NULL)
{
printf("Error before: [%s]\n", cJSON_GetErrorPtr());
return;
}
int i;
int arraySize=cJSON_GetArraySize(arrayItem);
for(i = 0; i< arraySize; i++)
{
CProduct* product = new CProduct();
cJSON *arrayItemArray = cJSON_GetArrayItem(arrayItem, i);//遍歷數組
if (arrayItemArray == NULL)
{
printf("Error before: [%s]\n", cJSON_GetErrorPtr());
return;
}
product->id = cJSON_GetObjectItem(arrayItemArray, "id")->valueint;
sprintf(product->name,"%s",cJSON_GetObjectItem(arrayItemArray, "name")->valuestring);
product->price = cJSON_GetObjectItem(arrayItemArray, "price")->valuedouble;
m_productList.push_back(product);//將對象添加到列表中
}
cJSON_Delete(root);//釋放內存

在使用遞歸函數時,需要注意內存泄漏問題,盡量及時釋放內存。

總之,使用C語言將JSON轉為實體類需使用JSON解析庫,處理復雜情況時需要遞歸函數,注意內存泄漏問題。