在C語言中使用JSON傳遞參數(shù),可以方便地將多個(gè)參數(shù)打包為一個(gè)JSON對(duì)象進(jìn)行傳輸和解析。下面是一個(gè)簡(jiǎn)單的示例:
#include <stdio.h> #include <jansson.h> int main() { // 創(chuàng)建一個(gè)JSON對(duì)象 json_t *json = json_object(); // 設(shè)置參數(shù)值 json_object_set_new(json, "name", json_string("張三")); json_object_set_new(json, "age", json_integer(20)); json_object_set_new(json, "height", json_real(1.8)); json_object_set_new(json, "hobbies", json_pack("[ssss]", "游泳", "跑步", "旅游", "閱讀")); // 序列化JSON對(duì)象為字符串 const char *json_str = json_dumps(json, JSON_COMPACT); // 輸出JSON字符串 printf("%s\n", json_str); // 解析JSON字符串為對(duì)象 json_t *json_obj = json_loads(json_str, JSON_DECODE_ANY, NULL); // 獲取參數(shù)值 const char *name = json_string_value(json_object_get(json_obj, "name")); int age = json_integer_value(json_object_get(json_obj, "age")); double height = json_real_value(json_object_get(json_obj, "height")); json_t *hobbies_arr = json_object_get(json_obj, "hobbies"); // 遍歷數(shù)組元素 size_t idx; json_t *value; const char *hobby; json_array_foreach(hobbies_arr, idx, value) { hobby = json_string_value(value); printf("愛好%d:%s\n", idx+1, hobby); } // 釋放對(duì)象和內(nèi)存 json_decref(json); json_decref(json_obj); free(json_str); return 0; }
上述代碼中,首先創(chuàng)建了一個(gè)JSON對(duì)象,然后設(shè)置了一些參數(shù)值,包括字符串、整數(shù)、實(shí)數(shù)和數(shù)組。接著,使用json_dumps將JSON對(duì)象序列化為字符串,輸出到控制臺(tái)進(jìn)行查看。然后,通過json_loads解析JSON字符串,獲取對(duì)應(yīng)的參數(shù)值。最后,遍歷數(shù)組元素并輸出。
需要注意的是,在使用json_object_set_new設(shè)置參數(shù)值時(shí),需要使用相應(yīng)的JSON類型的構(gòu)造函數(shù)。例如json_string、json_integer、json_real和json_pack等。解析JSON字符串時(shí),可以通過json_string_value、json_integer_value、json_real_value等獲取對(duì)應(yīng)類型的值。