在C語言中解析JSON格式字符串是一項相對復雜的任務,一般需要借助第三方庫實現。而最常用的JSON解析庫之一就是cJSON。cJSON是一個快速、輕便、源碼級的C語言JSON解析器,具有高效、可擴展等優秀特性。
要使用cJSON解析JSON格式字符串,首先需要進行第一步——將JSON字符串轉化為cJSON格式的樹狀結構。完成之后,我們就可以方便地使用cJSON提供的接口來獲取JSON的各個屬性值了。
cJSON* json = cJSON_Parse(jsonString); if (json == NULL) { printf("Failed to parse JSON string.\n"); } else { // Successfully parsed JSON string. }
在上述代碼中,我們使用了cJSON_Parse函數將JSON格式字符串轉換為cJSON結構。如果轉換失敗,函數將返回NULL,否則將返回一個cJSON對象,我們可以通過該對象獲取JSON的所有屬性值。
接下來,就可以使用cJSON提供的各種函數來獲取JSON的屬性值。這些函數包括:cJSON_GetObjectItem、cJSON_GetArrayItem、cJSON_GetStringValue、cJSON_GetNumberValue等等。具體使用方法可以參考cJSON官方文檔。
下面是一個解析JSON格式字符串的完整例子:
#include#include "cJSON.h" int main() { char* jsonString = "{ \"name\": \"John\", \"age\": 30, \"city\": \"New York\" }"; cJSON* json = cJSON_Parse(jsonString); if (json == NULL) { printf("Failed to parse JSON string.\n"); return 1; } cJSON* name = cJSON_GetObjectItem(json, "name"); cJSON* age = cJSON_GetObjectItem(json, "age"); cJSON* city = cJSON_GetObjectItem(json, "city"); printf("Name: %s\n", name->valuestring); printf("Age: %d\n", age->valueint); printf("City: %s\n", city->valuestring); cJSON_Delete(json); return 0; }
在上述代碼中,我們直接將一個JSON格式字符串作為輸入,解析出其中的name、age和city三個屬性值,并進行輸出。