C 字符串轉化為 JSON 格式化是一個相當常見的操作,尤其是在與網絡通信相關的應用場景中。雖然手動解析字符串并將其轉為 JSON 格式也有可能實現,但如果使用現有的一些開源庫,則可以大大簡化工作量,提高代碼質量和可維護性。
#include <stdio.h> #include <stdlib.h> #include <jansson.h> int main(void) { // 設定字符串 const char *str = "{ \"name\": \"John\", \"age\": 30, \"city\": \"New York\" }"; // 解析字符串 json_t *obj = json_loads(str, 0, NULL); if (!obj) { fprintf(stderr, "error: on line %d: %s\n", json_error_line, json_error_text); exit(1); } // 獲取屬性 const char *name = json_string_value(json_object_get(obj, "name")); int age = json_integer_value(json_object_get(obj, "age")); const char *city = json_string_value(json_object_get(obj, "city")); // 輸出屬性 printf("Name: %s\n", name); printf("Age: %d\n", age); printf("City: %s\n", city); // 清理資源 json_decref(obj); return 0; }
可以看到,使用 jansson 庫,只需幾行代碼即可將字符串轉化為 JSON 格式,并獲取其中的屬性值。如上代碼,首先為字符串設定初始值。然后解析字符串,將其轉化為 JSON 對象,如果解析失敗則輸出錯誤信息并退出程序。接著可以使用 json_object_get 函數,根據屬性名獲取屬性值,并根據數據類型轉化為相應的 C 變量。最后輸出屬性值,并清理資源。