C語言是一種廣泛使用的計(jì)算機(jī)編程語言之一。它具有高效、快速、可靠以及底層訪問的優(yōu)點(diǎn)。近年來,隨著互聯(lián)網(wǎng)的發(fā)展,JSON(JavaScript Object Notation)逐漸成為一種常用的數(shù)據(jù)交換格式。當(dāng)我們需要在C語言中解析JSON數(shù)據(jù)時(shí),我們可以采用一些第三方庫(kù)來實(shí)現(xiàn)。
#include <stdio.h> #include <jansson.h> int main() { const char* jsonString = "{\"name\":\"Tom\",\"age\":25}"; json_t* root; json_error_t error; root = json_loads(jsonString, JSON_DECODE_ANY, &error); if(!root) { printf("JSON解析錯(cuò)誤: %s", error.text); return 1; } json_t* name = json_object_get(root, "name"); json_t* age = json_object_get(root, "age"); printf("姓名:%s\n", json_string_value(name)); printf("年齡:%d\n", json_integer_value(age)); json_decref(root); return 0; }
在上述代碼中,我們使用了jansson這個(gè)C語言的JSON解析庫(kù)。在解析JSON串之前,我們必須先引入jansson.h頭文件,然后在代碼中定義一個(gè)指向JSON樹根的指針root。接著,我們可以通過json_loads()函數(shù)來實(shí)現(xiàn)對(duì)JSON串的解析。這個(gè)函數(shù)會(huì)返回一個(gè)指向JSON樹根的指針root,同時(shí)也會(huì)把字符串解析失敗的錯(cuò)誤信息保存在json_error_t結(jié)構(gòu)體中。
接下來,我們可以使用json_object_get()函數(shù)來獲取JSON中的具體值。它的第一個(gè)參數(shù)是JSON樹根,第二個(gè)參數(shù)是我們要獲取的JSON鍵值。它返回一個(gè)指向JSON值的指針。
最后,我們可以通過不同的json類型比如json_string_value()和json_integer_value()來獲取JSON值,并將結(jié)果輸出。最后,我們要釋放JSON樹的內(nèi)存,以避免內(nèi)存泄漏。