C語(yǔ)言中的json操作是常見(jiàn)且重要的,如何配置c json類是關(guān)鍵。下面我們來(lái)一一了解。
#include <stdio.h> #include <string.h> #include <jansson.h> int main() { json_t *root; // 定義根節(jié)點(diǎn) json_error_t error; // 定義錯(cuò)誤信息變量 // 從字符串中讀取json信息 root = json_loads("{\"name\":\"張三\",\"age\":18}", 0, &error); // 判斷是否讀取成功 if (!root) { printf("json_loads error on line %d: %s\n", error.line, error.text); return 1; } // 獲取節(jié)點(diǎn)信息 json_t *name = json_object_get(root, "name"); json_t *age = json_object_get(root, "age"); // 打印結(jié)果 printf("name:%s\n", json_string_value(name)); printf("age:%d\n", json_integer_value(age)); // 釋放內(nèi)存空間 json_decref(root); return 0; }
上述代碼示例中,我們使用了C語(yǔ)言中的json_t數(shù)據(jù)類型,它是一個(gè)結(jié)構(gòu)體指針,用于存儲(chǔ)json數(shù)據(jù)的根節(jié)點(diǎn),通過(guò)根節(jié)點(diǎn)的指針,我們可以方便地獲取json數(shù)據(jù)的各個(gè)子節(jié)點(diǎn)信息。
在使用json_t之前,我們需要使用json_error_t類型的變量error,用來(lái)存儲(chǔ)錯(cuò)誤信息,它也是一個(gè)結(jié)構(gòu)體類型,里面包含錯(cuò)誤信息的行數(shù)和文本。
讀取json數(shù)據(jù)的方式有很多種,我們這里使用json_loads()函數(shù)從字符串中讀取json信息,并對(duì)是否讀取成功進(jìn)行了判斷。讀取成功后,我們使用json_object_get()函數(shù)獲取節(jié)點(diǎn)信息,尤其注意這里獲取的節(jié)點(diǎn)信息類型。
最后,我們使用json_decref()函數(shù)釋放內(nèi)存空間。c語(yǔ)言中的json操作需要注意內(nèi)存管理問(wèn)題,千萬(wàn)不要忘了釋放內(nèi)存空間。