欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

c json轉對象為空

錢多多1年前9瀏覽0評論

使用C json轉對象時,有時會遇到對象為空的情況。

#include#include#include#include "cjson/cJSON.h"
int main()
{
char *json_str = "{}";
cJSON *root = cJSON_Parse(json_str);
if (!root)
{
const char *error_ptr = cJSON_GetErrorPtr();
if (error_ptr != NULL)
{
fprintf(stderr, "Error before: %s\n", error_ptr);
}
}
cJSON_Delete(root);
return 0;
}

可以看到,這個JSON字符串里只有一對空大括號,表示一個空的對象。然而,使用cJSON_Parse將其轉換為cJSON對象時,root的值卻為NULL。

這是因為使用cJSON_Parse解析空對象時,cJSON內部會將root設為NULL。因此,必須在使用root之前對其進行非NULL判斷,避免出現程序崩潰的情況。

if (!root)
{
const char *error_ptr = cJSON_GetErrorPtr();
if (error_ptr != NULL)
{
fprintf(stderr, "Error before: %s\n", error_ptr);
}
}

在這段代碼中,我們通過判斷root是否為NULL來處理空對象的情況,在cJSON_GetErrorPtr()方法中獲取錯誤信息。需要注意的是,即使是空對象,也可以使用cJSON_Delete()方法進行釋放。

cJSON_Delete(root);

因此,在使用cJSON_Parse解析JSON字符串時,需要注意空對象的情況,避免出現意外情況。