JSON(JavaScript Object Notation)是一種用于數據交換格式的輕量級語言。在使用C語言解析和操作JSON字符串時,可以使用一些開源的庫,如Jansson、cJSON、cJSON++等。這里將簡要介紹使用cJSON庫進行JSON字符串取值。
#include <stdio.h> #include <cJSON.h> int main() { const char *json_str = "{\"name\":\"John\",\"age\":30,\"city\":\"New York\"}"; cJSON *root = cJSON_Parse(json_str); if (root == NULL) { printf("Error before: [%s]\n", cJSON_GetErrorPtr()); return 1; } cJSON *name = cJSON_GetObjectItem(root, "name"); cJSON *age = cJSON_GetObjectItem(root, "age"); cJSON *city = cJSON_GetObjectItem(root, "city"); printf("Name: %s\n", name->valuestring); printf("Age: %d\n", age->valueint); printf("City: %s\n", city->valuestring); cJSON_Delete(root); return 0; }
首先定義一個JSON字符串,然后使用cJSON_Parse()函數將字符串解析為一個cJSON對象root。如果解析失敗,將返回NULL指針,并且可以使用cJSON_GetErrorPtr()函數獲取錯誤信息。
cJSON對象是一個樹形結構,可以通過調用cJSON_GetObjectItem()函數獲取子節點。該函數的第二個參數是要獲取子節點的名稱,返回一個指向子節點的指針。
cJSON節點的類型由valueint、valuestring、valuebool等成員決定,可以使用相應的成員獲取節點的值。在使用完cJSON對象后,應使用cJSON_Delete()函數釋放對象占用的內存。
通過這種方式,可以方便地在C語言中解析JSON字符串,提取需要的信息。如果JSON字符串比較復雜,建議使用cJSON庫提供的其他函數和結構體進行更方便的操作。