JSON(JavaScript Object Notation)是一種輕量級的數據交換格式,由于它不依賴于任何特定的語言,逐漸成為互聯網上數據交換的標準格式。在C語言中,我們可以使用一些庫來讀取JSON中的值。下面是一個使用CJSON庫來讀取JSON值的例子。
#include <stdio.h>
#include <cJSON.h>
int main()
{
char *jsonStr = "{ \"name\": \"Lucy\", \"age\": 20 }";
cJSON *json = cJSON_Parse(jsonStr);
if (!json) {
printf("Error before: [%s]\n", cJSON_GetErrorPtr());
return 1;
}
cJSON *name = cJSON_GetObjectItemCaseSensitive(json, "name");
if (cJSON_IsString(name) && (name->valuestring != NULL)) {
printf("name: %s\n", name->valuestring);
}
cJSON *age = cJSON_GetObjectItemCaseSensitive(json, "age");
if (cJSON_IsNumber(age)) {
printf("age: %d\n", age->valueint);
}
cJSON_Delete(json);
return 0;
}
在這個例子中,我們首先定義了一個JSON字符串,然后使用cJSON_Parse函數將之轉換為cJSON對象。如果轉換失敗,cJSON_Parse函數將返回NULL,并且我們可以使用cJSON_GetErrorPtr函數獲取錯誤信息。接下來,我們使用函數cJSON_GetObjectItemCaseSensitive獲取JSON對象中的值。該函數的第一個參數是原始cJSON對象,第二個參數是JSON中的key。我們可以使用函數cJSON_IsString來判斷值是否是字符串,并使用變量valuestring獲取字符串值。類似地,我們也可以使用函數cJSON_IsNumber來判斷值是否是數字,并使用變量valueint獲取整數值。最后,我們需要使用cJSON_Delete函數釋放cJSON對象。