在C語言中,讀取JSON數(shù)據(jù)是一個非常常見的操作。下面我們來看一個C語言讀取JSON數(shù)據(jù)的實例。
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <jansson.h> int main() { char* json_str = "{ \"name\": \"Tom\", \"age\": 26, \"is_student\": true }"; json_error_t error; json_t* root = json_loads(json_str, 0, &error); if(!root) { printf("JSON讀取失敗:%s\n", error.text); return -1; } json_t* name = json_object_get(root, "name"); json_t* age = json_object_get(root, "age"); json_t* is_student = json_object_get(root, "is_student"); if(json_is_string(name)) printf("姓名:%s\n", json_string_value(name)); if(json_is_integer(age)) printf("年齡:%d\n", json_integer_value(age)); if(json_is_boolean(is_student)) { if(json_true() == is_student) printf("是否為學生:是\n"); else printf("是否為學生:否\n"); } json_decref(name); json_decref(age); json_decref(is_student); json_decref(root); return 0; }
這里我們使用了一個很常見的JSON庫——jansson庫來讀取JSON數(shù)據(jù)。我們首先創(chuàng)建了一個JSON字符串,然后調(diào)用了json_loads函數(shù)來將JSON字符串轉(zhuǎn)換成一個json_t類型的對象root。
為了防止JSON讀取失敗,我們還需要對返回值進行判斷。如果root對象為空,說明JSON讀取失敗,我們可以通過error.text來獲取錯誤信息。
然后我們分別通過json_object_get函數(shù)來獲取root對象中的name、age和is_student字段,并分別判斷其類型,最后使用相應的函數(shù)來獲取其值。
最后我們還需要手動釋放每一個json_t類型的對象,防止內(nèi)存泄漏。