在C語言中,獲取數據的方式可以是從文件中讀取,也可以是從網絡中獲取。在API中,一般會返回一串json格式的數據,包含了我們需要的信息。那么如何將這串json數據解析成為我們需要的數據呢?這時候我們需要使用到第三方庫。
C語言中,常用的第三方庫有如下幾個,分別為:
- cJSON - json-c - Jansson
cJSON是一款輕量級的JSON解析器,用于解析JSON數據并將其轉換為C結構。
//示例代碼 #include#include #include "cJSON.h" typedef struct { int id; char *name; char *desc; } Item; void print_item(Item *item) { printf("%d: %s - %s\n", item->id, item->name, item->desc); } int main() { char *json_str = "[ {\"id\": 1, \"name\": \"item1\", \"desc\": \"this is item1\"}, {\"id\": 2, \"name\": \"item2\", \"desc\": \"this is item2\"}, {\"id\": 3, \"name\": \"item3\", \"desc\": \"this is item3\"} ]"; cJSON *json = cJSON_Parse(json_str); cJSON *item = NULL; cJSON_ArrayForEach(item, json) { Item *new_item = (Item*)malloc(sizeof(Item)); new_item->id = cJSON_GetObjectItem(item, "id")->valueint; new_item->name = cJSON_GetObjectItem(item, "name")->valuestring; new_item->desc = cJSON_GetObjectItem(item, "desc")->valuestring; print_item(new_item); } cJSON_Delete(json); return 0; }
上面的代碼演示了如何將一個json對象數組解析成為C結構。