當我們在處理XML格式數據時,有時需要將其轉換為JSON格式。這可以通過一些庫或者工具來實現,其中最常用的是cJSON。
下面是使用cJSON庫將XML轉換為JSON的示例代碼:
#include "cJSON.h" #include "tinyxml.h" cJSON* XmlToJson(TiXmlElement* root) { cJSON* json = cJSON_CreateObject(); TiXmlAttribute* attr = NULL; TiXmlNode* node = NULL; TiXmlElement* ele = NULL; cJSON* childJson = NULL; cJSON_AddStringToObject(json, "name", root->Value()); for (attr = root->FirstAttribute(); attr != NULL; attr = attr->Next()) { cJSON_AddStringToObject(json, attr->Name(), attr->Value()); } for (node = root->FirstChild(); node != NULL; node = node->NextSibling()) { ele = node->ToElement(); if (ele) { childJson = XmlToJson(ele); cJSON_AddItemToArray(cJSON_GetObjectItem(json, "children"), childJson); } else { cJSON_AddStringToObject(json, node->Value(), node->ToText()->Value()); } } return json; }
這是將一個XML節點轉換為JSON對象的函數。對于每個XML節點,我們需要分解其標簽名、屬性以及子節點信息,并在JSON對象中保存這些數據。
如果需要將整個XML文檔轉換為JSON格式,則我們可以通過遍歷文檔的根節點來完成:
#include "cJSON.h" #include "tinyxml.h" cJSON* XmlDocToJson(TiXmlDocument* doc) { cJSON* json = cJSON_CreateObject(); TiXmlElement* root = doc->RootElement(); cJSON_AddStringToObject(json, "name", root->Value()); cJSON* children = cJSON_CreateArray(); cJSON_AddItemToObject(json, "children", children); cJSON* childJson = XmlToJson(root); cJSON_AddItemToArray(children, childJson); return json; }
以上示例代碼使用了cJSON和TinyXML兩個庫。首先,我們需要將XML文檔解析為一棵樹,并通過遍歷各個節點來生成JSON對象,最后將其打印輸出或者以字符串形式返回。
因此,cJSON庫提供了豐富的API函數可以用來處理JSON格式數據,其簡單易用,同時也易于擴展。
上一篇html字號調試怎么設置
下一篇vue 3.0性能