色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

c json日期格式轉換

錢多多2年前7瀏覽0評論

C語言中操作JSON數據格式非常方便,但是日期格式在不同的系統中可能不一致,需要進行轉換。下面我們來講解如何在C語言中將JSON中的日期格式轉換成我們所需的格式。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <jansson.h>
char* format_time(time_t t, char* buf, size_t len)
{
struct tm* ptm;
ptm = gmtime(&t);
strftime(buf, len, "%Y-%m-%d %H:%M:%S", ptm);
return buf;
}
void convert_date(json_t* obj)
{
if (json_is_string(obj))
{
const char* str = json_string_value(obj);
time_t t = strtotime(str);
if (t != -1)
{
char buf[32];
format_time(t, buf, sizeof(buf));
json_string_set(obj, buf);
}
}
else if (json_is_array(obj) || json_is_object(obj))
{
size_t i;
json_t* value;
json_array_foreach(obj, i, value)
{
convert_date(value);
}
}
}
int main(int argc, char* argv[])
{
const char* str = "{ \"create_time\": \"2022-11-11 11:11:11\", \"update_time\": \"2022-11-11 22:22:22\" }";
json_error_t error;
json_t* root = json_loads(str, 0, &error);
if (!root)
{
fprintf(stderr, "json_loads failed: %s\n", error.text);
return 1;
}
convert_date(root);
char* dump_str = json_dumps(root, JSON_INDENT(4));
printf("%s\n", dump_str);
free(dump_str);
json_decref(root);
return 0;
}

首先我們需要一個函數將從JSON中解析出來的日期字符串轉換成time_t類型。這里我們采用標準庫函數gmtime和strftime來完成轉換,其中strftime的第二個參數"%Y-%m-%d %H:%M:%S"指定了最終日期字符串的格式。

接下來定義convert_date函數,遞歸遍歷JSON中的所有元素,如果元素是字符串類型,則調用format_time函數進行轉換,如果是數組或者對象類型,則遞歸遍歷其中的元素。

最后在main函數中解析JSON字符串,調用convert_date進行日期格式轉換,并且最終打印出轉換后的JSON字符串。