JSON和XML都是用于數據的傳輸和存儲格式,但它們的語法有所不同。在C語言中,通過JSON轉XML功能可以將JSON格式的數據轉換為XML格式的數據,從而方便XML的處理。
下面是C語言實現JSON轉XML的代碼:
#include#include #include #include "cJSON.h" #define MAX_SIZE 2048 int json_to_xml(const char* json_str, char* xml_str) { cJSON* json = cJSON_Parse(json_str); if (!json) return -1; strcpy(xml_str, ""); cJSON* item = json->child; while (item) { strcat(xml_str, "<"); strcat(xml_str, item->string); if (item->valuestring) { strcat(xml_str, ">"); strcat(xml_str, item->valuestring); strcat(xml_str, ""); strcat(xml_str, item->string); strcat(xml_str, ">"); } else { strcat(xml_str, ">"); cJSON* sub_item = item->child; while (sub_item) { strcat(xml_str, "<"); strcat(xml_str, sub_item->string); if (sub_item->valuestring) { strcat(xml_str, ">"); strcat(xml_str, sub_item->valuestring); strcat(xml_str, ""); strcat(xml_str, sub_item->string); strcat(xml_str, ">"); } else { strcat(xml_str, ">"); strcat(xml_str, ""); strcat(xml_str, sub_item->string); strcat(xml_str, ">"); } sub_item = sub_item->next; } strcat(xml_str, ""); strcat(xml_str, item->string); strcat(xml_str, ">"); } item = item->next; } cJSON_Delete(json); return strlen(xml_str); } int main() { char json_str[] = "{\"name\":\"Tom\",\"age\":20,\"address\":{\"city\":\"Shanghai\",\"address\":\"No.123 Road\"}}"; char xml_str[MAX_SIZE]; int ret = json_to_xml(json_str, xml_str); if (ret<= 0) return -1; printf("JSON to XML:\n%s", xml_str); return 0; }
以上代碼使用了cJSON庫,首先解析JSON字符串,然后將解析后的cJSON對象轉換為XML字符串。在轉換XML時,使用循環遍歷子項,根據子項類型進行不同的處理。
上一篇c實體類轉json
下一篇vue 監聽窗口大小