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

c 字符串轉(zhuǎn) json

洪振霞2年前7瀏覽0評論

在C語言中實現(xiàn)對字符串的轉(zhuǎn)換通常可以使用第三方的JSON庫,其中比較常用的有cJSON、Jansson等。在其中,cJSON是一款輕量級的JSON解析庫,可以完成字符串與JSON對象的轉(zhuǎn)換。下面將會介紹如何使用cJSON來進行字符串轉(zhuǎn)JSON的操作。

/**
 * 字符串轉(zhuǎn)JSON
 */
cJSON *str2json(const char *str)
{
cJSON *json = cJSON_Parse(str);
if (!json)
{
printf("Error before: %s\n", cJSON_GetErrorPtr());
return NULL;
}
return json;
}

上述代碼可以將一個字符串轉(zhuǎn)換成對應(yīng)的JSON對象并返回。在調(diào)用cJSON_Parse函數(shù)的時候需要注意,如果解析出錯時會返回一個NULL指針,所以在代碼中需要對其返回進行判斷。

/**
 * 示例代碼
 */
int main(int argc, char *argv[])
{
const char *str = "{"
"\"name\": \"張三\","
"\"age\": 18,"
"\"phone\": [\"13888888888\", \"13999999999\"],"
"\"address\": {"
"\"province\": \"江蘇\","
"\"city\": \"南京\","
"\"district\": \"雨花臺區(qū)\""
"}"
"}";
cJSON *json = str2json(str);
if (json)
{
// 輸出JSON對象的值
printf("name: %s\n", cJSON_GetObjectItem(json, "name")->valuestring);
printf("age: %d\n", cJSON_GetObjectItem(json, "age")->valueint);
// 獲取JSON數(shù)組
cJSON *phone = cJSON_GetObjectItem(json, "phone");
printf("phone: \n");
for (int i = 0; i< cJSON_GetArraySize(phone); i++)
{
printf("%s\n", cJSON_GetArrayItem(phone, i)->valuestring);
}
// 獲取JSON對象
cJSON *address = cJSON_GetObjectItem(json, "address");
printf("address: \n");
printf("province: %s\n", cJSON_GetObjectItem(address, "province")->valuestring);
printf("city: %s\n", cJSON_GetObjectItem(address, "city")->valuestring);
printf("district: %s\n", cJSON_GetObjectItem(address, "district")->valuestring);
// 釋放JSON對象
cJSON_Delete(json);
}
return 0;
}

上面是一個字符串轉(zhuǎn)JSON的示例代碼。在代碼中,我們首先將一個字符串傳入到str2json函數(shù)中,并獲取到返回的JSON對象。然后,通過cJSON_GetObjectItem函數(shù)可以方便地獲取到對應(yīng)JSON對象中的值。當然,在代碼中同樣需要注意內(nèi)存泄漏的情況,我們需要通過cJSON_Delete函數(shù)來釋放JSON對象。