在C語(yǔ)言中,我們經(jīng)常會(huì)遇到需要將多個(gè)JSON字符串轉(zhuǎn)換為對(duì)象的情況。這時(shí),我們可以使用JSON-C庫(kù),這是一個(gè)用于解析和生成JSON數(shù)據(jù)的輕量級(jí)庫(kù)。
#include <stdio.h> #include <json-c/json.h> int main() { // 假設(shè)有兩個(gè)JSON字符串 const char *str1 = "{\"name\": \"Tom\", \"age\": 20}"; const char *str2 = "{\"name\": \"John\", \"age\": 30}"; // 解析第一個(gè)JSON字符串 struct json_object *obj1 = json_tokener_parse(str1); // 解析第二個(gè)JSON字符串 struct json_object *obj2 = json_tokener_parse(str2); // 訪問(wèn)第一個(gè)JSON對(duì)象中的數(shù)據(jù) struct json_object *name1, *age1; json_object_object_get_ex(obj1, "name", &name1); json_object_object_get_ex(obj1, "age", &age1); printf("The name of the first person is %s, and their age is %d.\n", json_object_get_string(name1), json_object_get_int(age1)); // 訪問(wèn)第二個(gè)JSON對(duì)象中的數(shù)據(jù) struct json_object *name2, *age2; json_object_object_get_ex(obj2, "name", &name2); json_object_object_get_ex(obj2, "age", &age2); printf("The name of the second person is %s, and their age is %d.\n", json_object_get_string(name2), json_object_get_int(age2)); // 釋放內(nèi)存 json_object_put(obj1); json_object_put(obj2); return 0; }
在上面的代碼中,我們使用了json_tokener_parse函數(shù)來(lái)解析JSON字符串,得到了一個(gè)json_object類型的對(duì)象。然后使用json_object_object_get_ex函數(shù)訪問(wèn)對(duì)象中的數(shù)據(jù),并使用json_object_get_string和json_object_get_int函數(shù)將數(shù)據(jù)轉(zhuǎn)換為C語(yǔ)言中的字符串和整數(shù)類型。
注意,在使用完json_object后,我們需要調(diào)用json_object_put函數(shù)釋放內(nèi)存。