C語(yǔ)言是一門(mén)經(jīng)典的編程語(yǔ)言,在現(xiàn)代化的計(jì)算機(jī)系統(tǒng)中仍然被廣泛地使用。當(dāng)我們使用c語(yǔ)言編寫(xiě)程序時(shí),可能會(huì)需要處理json格式的數(shù)據(jù)類型。json是一種輕量級(jí)的數(shù)據(jù)交換格式,其優(yōu)點(diǎn)是易于理解、便于閱讀、簡(jiǎn)潔明了等特點(diǎn)。那么,如何在c語(yǔ)言中讀取json類型的數(shù)據(jù)呢?
#include <stdio.h> #include <jansson.h> int main() { json_t *root; //定義json變量 json_error_t error; const char *jsonstr = "{\"name\":\"張三\", \"age\": 18}"; //定義json字符串 root = json_loads(jsonstr, 0, &error); //將json字符串轉(zhuǎn)化為json對(duì)象 if (!root) { //如果讀取失敗 printf("json error on line %d: %s", error.line, error.text); return 1; } if (!json_is_object(root)) { //如果json不是一個(gè)object對(duì)象 printf("json error: root is not an object"); json_decref(root); return 1; } const char *name = json_string_value(json_object_get(root, "name")); //獲取name值 int age = json_integer_value(json_object_get(root, "age")); //獲取age值 printf("name: %s, age: %d", name, age); json_decref(root); //釋放json對(duì)象 return 0; }
上面的代碼通過(guò)使用jansson庫(kù)中的json_loads函數(shù)將json字符串轉(zhuǎn)化為json對(duì)象,然后使用json_is_object函數(shù)判斷是否是一個(gè)object對(duì)象,最后使用json_object_get函數(shù)獲取json對(duì)象中的值。需要注意的是,在讀取完json對(duì)象后,需要使用json_decref函數(shù)將其釋放。