Json是一種輕量級的數據交換格式,而XML則是一個標準化的數據格式。在實際項目中,我們有時需要把Json格式數據轉換為XML格式。接下來,我們將使用C語言來實現Json格式數據轉換為XML格式的功能。
#include#include #include char* convertJSONtoXML(char* json_string); int main() { char* json_string = "{\"name\":\"John\",\"age\":30,\"city\":\"New York\"}"; // 待轉換的JSON格式字符串 char* xml_string = convertJSONtoXML(json_string); printf("%s\n", xml_string); return 0; } char* convertJSONtoXML(char* json_string) { char* xml_string = (char*)malloc(sizeof(char)*1024); // 分配一個足夠大的字符數組 strcat(xml_string, "\n"); // 添加XML聲明 char* pointer = strtok(json_string, "{:,\"}"); // 分割字符串,提取JSON格式數據 char* tag_name = NULL; // XML標簽名 int is_value = 0; // 是否為值 while(pointer != NULL) { if(strcmp(pointer, "name") == 0) // 屬性名為name { tag_name = "name"; is_value = 0; } else if(strcmp(pointer, "age") == 0) // 屬性名為age { tag_name = "age"; is_value = 0; } else if(strcmp(pointer, "city") == 0) // 屬性名為city { tag_name = "city"; is_value = 0; } else // 屬性值 { if(is_value == 0) // 開始標簽 { strcat(xml_string, "\t<"); // 添加開始標簽 strcat(xml_string, tag_name); strcat(xml_string, ">"); strcat(xml_string, pointer); is_value = 1; } else // 結束標簽 { strcat(xml_string, ""); // 添加結束標簽 strcat(xml_string, tag_name); strcat(xml_string, ">\n"); is_value = 0; } } pointer = strtok(NULL, "{:,\"}"); } return xml_string; }
以上代碼實現了Json轉XML的功能,具體實現過程如下:首先定義了一個convertJSONtoXML函數,該函數接收一個Json格式字符串,并返回一個XML格式字符串。在函數內部,我們首先動態(tài)分配了一個足夠大的字符數組,用于存儲轉換后的XML字符串。接著使用strtok函數對Json格式字符串進行分割,提取屬性名和屬性值。在遍歷屬性名和屬性值的過程中,我們采用了類似棧的思想,碰到一個屬性名時,將其作為XML標簽名;碰到一個屬性值時,添加一個XML標記,并按照層次關系添加開始和結束標簽。最后返回XML字符串即可。