> 文章列表 > C# | JSON格式与XML格式互相转换

C# | JSON格式与XML格式互相转换

C# | JSON格式与XML格式互相转换

C# | JSON格式与XML格式互相转换

文章目录

  • C# | JSON格式与XML格式互相转换
    • 前言
    • JSON转XML
    • XML转JSON
      • 实现步骤
      • 示例代码

前言

JSON格式与XML格式是目前互联网上使用最为广泛的数据交换格式之一,而两种格式各自有着自己的特点和优势。
在实际开发中,我们经常需要将数据在不同的系统或模块之间进行传递和转换,而JSON格式和XML格式的互相转换是一项非常基础和必要的技能。
同时,对于需要将数据存储在不同的介质中的应用场景,比如在移动端本地存储数据,或者在服务器端将数据保存到文件或数据库中,也需要将JSON或XML格式进行相应的转换。
因此,熟练掌握JSON与XML格式互相转换的方法对于开发人员来说是非常重要的。在本文中,我们将介绍常用的JSON和XML互相转换的方法及其实现。

JSON转XML

将Json格式的数据转为XML不难,我们可以使用JsonConvert类将Json格式的字符串转为JObject对象,然后使用JObject对象中的方法将其转为XML格式的字符串。

实现步骤

第一步:将Json格式的字符串转为JObject对象。

JObject jObject = JObject.Parse(jsonString);

第二步:创建一个XmlDocument对象,使用JToken的方法将JObject对象转为XML格式的字符串,并将其添加到XmlDocument对象中。

XmlDocument xmlDocument = new XmlDocument();
xmlDocument.LoadXml("<?xml version=\\"1.0\\" encoding=\\"utf-8\\" ?><Root></Root>");
XmlNode root = xmlDocument.SelectSingleNode("Root");
root.AppendChild(XElement.Parse(jObject.ToString()).ToXmlNode());

示例代码

完整的代码示例如下:

string jsonString = "{\\"Table\\":{\\"Row\\":[{\\"Name\\":\\"张三\\",\\"Age\\":\\"20\\"},{\\"Name\\":\\"李四\\",\\"Age\\":\\"25\\"}]}}";
JObject jObject = JObject.Parse(jsonString);
XmlDocument xmlDocument = new XmlDocument();
xmlDocument.LoadXml("<?xml version=\\"1.0\\" encoding=\\"utf-8\\" ?><Root></Root>");
XmlNode root = xmlDocument.SelectSingleNode("Root");
root.AppendChild(XElement.Parse(jObject.ToString()).ToXmlNode());
Console.WriteLine(xmlDocument.InnerXml);

XML转JSON

其实将XML格式的数据转为Json也并不复杂。我们可以先将XML数据读取到DataSet中,然后再使用JsonConvert类将DataSet转为Json格式的字符串。

实现步骤

第一步:创建一个DataSet对象,并使用XmlReader读取XML格式的数据。

DataSet ds = new DataSet();
using (XmlReader reader = XmlReader.Create(new StringReader(xmlString)))
{ds.ReadXml(reader);
}

第二步:将DataSet对象转为Json格式的字符串。

string jsonString = JsonConvert.SerializeObject(ds, Formatting.Indented);

示例代码

完整的代码示例如下:

string xmlString = "<Table><Row><Name>张三</Name><Age>20</Age></Row><Row><Name>李四</Name><Age>25</Age></Row></Table>";
DataSet ds = new DataSet();
using (XmlReader reader = XmlReader.Create(new StringReader(xmlString)))
{ds.ReadXml(reader);
}
string jsonString = JsonConvert.SerializeObject(ds, Formatting.Indented);
Console.WriteLine(jsonString);