C 是一種經典的編程語言,它可以處理各種數據格式,包括 JSON。當我們需要處理 JSON 數據中的時間格式時,就需要特別注意,因為 JSON 中的時間格式通常是字符串類型的,需要進行轉換后才能使用。
#include <time.h> #include <stdio.h> #include <string.h> #include <stdlib.h> #include <jansson.h> int main(int argc, const char *argv[]) { const char *json_string = "{\"time\":\"2021-09-28T05:32:00Z\"}"; json_t *root; json_error_t error; root = json_loads(json_string, JSON_ENCODE_ANY, &error); if (!root) { fprintf(stderr, "error: on line %d: %s\n", error.line, error.text); return 1; } json_t *time_json = json_object_get(root, "time"); if (!time_json) { fprintf(stderr, "error: no time field\n"); return 1; } const char *time_str = json_string_value(time_json); struct tm time_struct = {0}; char time_buf[32] = {0}; strptime(time_str, "%Y-%m-%dT%H:%M:%SZ", &time_struct); strftime(time_buf, sizeof(time_buf), "%Y-%m-%d %H:%M:%S", &time_struct); printf("time: %s\n", time_buf); json_decref(root); return 0; }
上述代碼中,我們首先使用json_loads()
函數將 JSON 字符串轉換為 JSON 對象,然后使用json_object_get()
函數從對象中獲取時間字符串。
接下來,我們使用 POSIX 標準的strptime()
函數將時間字符串轉換為tm
時間結構體,并使用strftime()
函數將tm
結構體轉換為可讀的時間字符串。最后,使用json_decref()
函數釋放 JSON 對象,避免內存泄漏。
通過這些步驟,我們就可以輕松處理 JSON 數據中的時間格式,方便地進行后續的數據處理。