在 C 語言中,將字符串轉(zhuǎn)為 JSON 對(duì)象數(shù)組是一項(xiàng)非常常見的操作,通常需要使用第三方庫(kù)來實(shí)現(xiàn)。其中,json-c
庫(kù)是一個(gè)非常好用的 JSON 庫(kù),可以輕松地將字符串轉(zhuǎn)成 JSON 對(duì)象數(shù)組。
下面介紹一下如何使用json-c
庫(kù)來實(shí)現(xiàn)這一操作:
#include <stdio.h> #include <json-c/json.h> int main() { char* str = "{ \"name\":\"John\", \"age\":30, \"city\":\"New York\" }"; struct json_object* jobj = json_tokener_parse(str); enum json_type type = json_object_get_type(jobj); if (type == json_type_object) { int len = json_object_object_length(jobj); struct json_object_iter iter; for (json_object_iter_init(&iter, jobj); json_object_iter_next(&iter);) { const char* key = json_object_iter_peek_name(&iter); struct json_object* val = json_object_iter_peek_value(&iter); printf("Key: %s, Value type: %s\n", key, json_type_to_name(json_object_get_type(val))); } } json_object_put(jobj); return 0; }
首先,定義需要轉(zhuǎn)換的字符串str
。然后,使用json_tokener_parse
函數(shù)將字符串轉(zhuǎn)換為 JSON 對(duì)象數(shù)組表示。接下來,使用json_object_get_type
函數(shù)獲取對(duì)象數(shù)組類型,如果是對(duì)象類型,則使用json_object_object_length
函數(shù)獲取對(duì)象數(shù)組長(zhǎng)度,并使用json_object_iter_init
函數(shù)初始化一個(gè)迭代器,使用json_object_iter_next
函數(shù)遍歷每個(gè)鍵值對(duì)。使用json_object_iter_peek_name
函數(shù)獲取鍵名,使用json_object_iter_peek_value
函數(shù)獲取鍵值,分別輸出即可。
最后,需要注意,在完成操作后需要使用json_object_put
函數(shù)釋放對(duì)象數(shù)組。這是因?yàn)?code>json-c庫(kù)中的對(duì)象是以引用計(jì)數(shù)的方式管理的。