C語言是一種常用的編程語言,它可以用于各種領(lǐng)域,包括數(shù)據(jù)處理。JSON是一種常用的數(shù)據(jù)格式,它在數(shù)據(jù)交換時(shí)非常方便。在處理JSON數(shù)據(jù)時(shí),有時(shí)需要將其轉(zhuǎn)成鍵值對(duì)的集合,C語言可以通過下面的方法實(shí)現(xiàn):
#include <stdio.h> #include <jansson.h> int main() { json_t *root; json_error_t error; root = json_loads("{\"name\":\"John\", \"age\":30, \"city\":\"New York\"}", 0, &error); if(!root) { printf("error: on line %d: %s\n", error.line, error.text); return 1; } const char *name = NULL, *city = NULL; int age = 0; json_unpack(root, "{s:s, s:i, s:s}", "name", &name, "age", &age, "city", &city); printf("Name: %s, Age: %d, City: %s\n", name, age, city); json_decref(root); return 0; }
在上面的代碼中,我們先使用json_loads函數(shù)將JSON文本解析為json_t類型的對(duì)象,如果解析失敗會(huì)返回NULL。然后使用json_unpack函數(shù)將json_t對(duì)象轉(zhuǎn)換成C語言的變量。其中第一個(gè)參數(shù)是要轉(zhuǎn)換的json_t對(duì)象,第二個(gè)參數(shù)是字符串模板,第三個(gè)參數(shù)及以后是轉(zhuǎn)換后存儲(chǔ)變量的指針,他們按順序和字符串模板中的占位符一一對(duì)應(yīng)。
在本例中,我們使用了"{s:s, s:i, s:s}"作為字符串模板,其中{s:s}表示將JSON的字符串類型轉(zhuǎn)成C語言的char*類型,{s:i}表示將JSON的整數(shù)類型轉(zhuǎn)成C語言的int類型。 最后,我們使用json_decref函數(shù)釋放json_t對(duì)象占用的空間。