在C語言中,我們可以使用所謂的JSON庫來解析和處理JSON數據格式。JSON是一種輕量級的數據交換格式,由于其簡單性和易于閱讀的特性,在多種應用場景下得到廣泛使用。
#include <stdio.h> #include <jansson.h> int main() { char *json_string = "{\"name\":\"Alice\",\"age\":25,\"address\":\"Shanghai\"}"; json_error_t error; json_t *root = json_loads(json_string, 0, &error); if (!root) { printf("error: on line %d: %s\n", error.line, error.text); return 1; } json_t *name = json_object_get(root, "name"); json_t *age = json_object_get(root, "age"); json_t *address = json_object_get(root, "address"); printf("name: %s\n", json_string_value(name)); printf("age: %d\n", json_integer_value(age)); printf("address: %s\n", json_string_value(address)); json_decref(root); return 0; }
在上述代碼中,我們使用了jansson庫來解析一個JSON字符串。我們首先使用json_loads函數來將JSON字符串轉化為json_t類型的數據。如果JSON字符串存在格式錯誤,則json_loads函數將返回空指針。此時我們可以使用json_error_t類型的結構體來定位錯誤所在行數和錯誤原因。
接著我們使用json_object_get函數來獲取JSON數據中相應鍵的值。在上述例子中,我們通過鍵“name”,“age”,“address”來獲取相應的值。由于我們已經知道相應的鍵的類型,所以我們可以使用json_string_value和json_integer_value來分別獲取字符串類型和整數類型的值。
最后,我們需要使用json_decref來釋放我們申請的json_t類型數據所占用的內存。