C語言中的字符串是以'\0'字符結尾的字符數組,我們常用字符串函數庫來操作和處理它們。在處理JSON數據時,我們通常需要將JSON字符串解析成一個JSON對象或者將JSON對象轉化成JSON字符串。
// 將JSON字符串解析成JSON對象 #include <stdio.h> #include <jansson.h> void parse_json(const char *json_str){ json_error_t error; json_t *root = json_loads(json_str, 0, &error); // 解析JSON字符串 if(!root){ printf("error: on line %d: %s\n", error.line, error.text); }else{ // 處理JSON對象 const char *name = json_string_value(json_object_get(root, "name")); int age = json_integer_value(json_object_get(root, "age")); printf("name:%s\nage:%d\n", name, age); } json_decref(root); // 釋放JSON對象 } int main(){ const char *json_str = "{\"name\":\"Tom\",\"age\":18}"; parse_json(json_str); return 0; }
上述代碼演示了如何將一個JSON字符串解析成JSON對象,并從JSON對象中獲取數據。需要使用第三方庫jansson來解析JSON數據。
// 將JSON對象轉化成JSON字符串 #include <stdio.h> #include <jansson.h> void to_json_object(){ json_t *root = json_object(); // 創建一個JSON對象 json_object_set_new(root, "name", json_string("Tom")); // 在JSON對象中添加一個鍵值對 json_object_set_new(root, "age", json_integer(18)); char *json_str = json_dumps(root, JSON_COMPACT); // 將JSON對象轉化成JSON字符串 printf("%s", json_str); json_decref(root); // 釋放JSON對象 free(json_str); // 釋放內存 } int main(){ to_json_object(); return 0; }
上述代碼演示了如何將一個JSON對象轉化成JSON字符串,需要使用jansson的API。需要注意的是,字符串函數庫不能直接用來處理JSON數據,需要使用專門的JSON庫來處理。