C語(yǔ)言是一門(mén)廣泛應(yīng)用于系統(tǒng)編程、嵌入式開(kāi)發(fā)等領(lǐng)域的語(yǔ)言,其處理JSON數(shù)據(jù)也是非常常見(jiàn)的應(yīng)用場(chǎng)景。在C語(yǔ)言中,我們可以使用處理JSON數(shù)據(jù)的handler,快速解析和處理JSON數(shù)據(jù)。
// 示例 JSON 數(shù)據(jù) // { "name": "Kobe Bryant", "age": 41, "achievement": ["5 time NBA champion", "2 time NBA Finals MVP"] } #include <stdio.h>#include <jansson.h>int main() { char *json_str = "{ \"name\": \"Kobe Bryant\", \"age\": 41, \"achievement\": [\"5 time NBA champion\", \"2 time NBA Finals MVP\"] }"; json_error_t error; json_t *root, *name, *age, *achievement, *achievement_item; root = json_loads(json_str, 0, &error); if(!root) { fprintf(stderr, "JSON 解析失?。?s\\n", error.text); return 1; } name = json_object_get(root, "name"); age = json_object_get(root, "age"); achievement = json_object_get(root, "achievement"); printf("name: %s\\n", json_string_value(name)); printf("age: %d\\n", json_integer_value(age)); printf("achievement: ["); size_t size = json_array_size(achievement); for(int i = 0; i < size; ++i) { achievement_item = json_array_get(achievement, i); printf("%s%s", json_string_value(achievement_item), i == size - 1 ? "" : ", "); } printf("]\\n"); json_decref(root); return 0; }
在這段代碼中,我們使用了jansson庫(kù)中的函數(shù)對(duì)JSON數(shù)據(jù)進(jìn)行了處理,并成功地輸出了Kobe Bryant的名字、年齡以及獲得的成就。這只是C語(yǔ)言中處理JSON數(shù)據(jù)的簡(jiǎn)單示例,實(shí)際中還可能涉及到更為復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。