C語(yǔ)言是一門(mén)廣泛應(yīng)用在嵌入式系統(tǒng)、移動(dòng)設(shè)備、桌面應(yīng)用程序、服務(wù)器端等領(lǐng)域的編程語(yǔ)言,因此,非常重要的一點(diǎn)就是能夠獲取JSON鍵,下面我們來(lái)看一下如何在C語(yǔ)言中獲取JSON鍵。
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <jansson.h> int main() { char *json_string = "{\"name\": \"Jack\", \"age\": 20}"; json_t *root; json_error_t error; root = json_loads(json_string, 0, &error); if(!root) { printf("json error on line %d: %s\n", error.line, error.text); } const char *key; json_t *value; void *iter = json_object_iter(root); while(iter) { key = json_object_iter_key(iter); value = json_object_iter_value(iter); printf("key=%s, value=%s\n", key, json_string_value(value)); iter = json_object_iter_next(root, iter); } json_decref(root); return 0; }
在上面的代碼中,我們使用了jansson這個(gè)C語(yǔ)言的JSON解析庫(kù)來(lái)解析JSON字符串,首先我們將json_string解析成root對(duì)象,然后通過(guò)json_object_iter函數(shù)獲取迭代器,使用json_object_iter_key函數(shù)獲取鍵值,使用json_object_iter_value函數(shù)獲取對(duì)應(yīng)的值,最后使用json_object_iter_next函數(shù)獲取下一個(gè)迭代器。通過(guò)循環(huán)依次輸出每個(gè)鍵值對(duì)的鍵和值。
總的來(lái)說(shuō),在C語(yǔ)言中獲取JSON鍵比較麻煩,需要借助第三方庫(kù)來(lái)解析JSON字符串,但是如果我們需要在嵌入式系統(tǒng)、移動(dòng)設(shè)備等資源有限的環(huán)境下進(jìn)行JSON解析,C語(yǔ)言依然是一個(gè)非常好的選擇。