JSON(JavaScript Object Notation)是一種輕量級的數(shù)據(jù)交換格式,以易讀易寫的方式表達(dá)結(jié)構(gòu)化的數(shù)據(jù)。在C語言中,我們可以手動解析JSON數(shù)據(jù),實現(xiàn)對數(shù)據(jù)的處理和分析。
#include <stdio.h> #include <string.h> #include <jansson.h> char *data = "{\"name\":\"Tom\", \"age\":26, \"address\":{\"city\":\"Shanghai\", \"street\":\"Huangpu District\"}}"; int main() { json_t *root, *name, *age, *address, *city, *street; root = json_loads(data, 0, NULL); name = json_object_get(root, "name"); age = json_object_get(root, "age"); address = json_object_get(root, "address"); city = json_object_get(address, "city"); street = json_object_get(address, "street"); printf("Name: %s\n", json_string_value(name)); printf("Age: %d\n", json_integer_value(age)); printf("City: %s\n", json_string_value(city)); printf("Street: %s\n", json_string_value(street)); json_decref(root); return 0; }
在這段代碼中,我們首先定義了一個JSON格式的字符串。然后使用json_loads函數(shù)將其轉(zhuǎn)換成json_t類型的對象。
接著,我們通過json_object_get函數(shù)獲取該對象中的字段名,例如"age","address"等。
最后,我們使用json_string_value和json_integer_value函數(shù)獲取字段名對應(yīng)的值,并輸出到終端。最后,我們要記得使用json_decref釋放內(nèi)存。
手動解析JSON數(shù)據(jù)可以拓展我們對于數(shù)據(jù)的處理能力,但也相對較為繁瑣和易錯。因此,在實際應(yīng)用中,我們可以使用第三方庫,例如jansson,來更加方便地進(jìn)行JSON解析。