本文主要是介绍c# Xml 和 Json 转换方法记录,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
c# xml 转 json
在C#中,可以使用下面几种方法将XML转换为JSON:
-
使用Newtonsoft.Json库:
using Newtonsoft.Json; using Newtonsoft.Json.Converters; using Newtonsoft.Json.Linq; using System.Xml;// 从XML字符串转换为JSON字符串 string xmlString = "<root><name>John</name><age>30</age></root>"; XmlDocument xml = new XmlDocument(); xml.LoadXml(xmlString); string jsonString = JsonConvert.SerializeXmlNode(xml);// 从XML文件转换为JSON字符串 string xmlFilePath = "path/to/xml/file.xml"; XmlDocument xml = new XmlDocument(); xml.Load(xmlFilePath); string jsonString = JsonConvert.SerializeXmlNode(xml);// 从XML字符串转换为JObject string xmlString = "<root><name>John</name><age>30</age></root>"; XmlDocument xml = new XmlDocument(); xml.LoadXml(xmlString); JObject jsonObject = JObject.Parse(JsonConvert.SerializeXmlNode(xml));// 从XML文件转换为JObject string xmlFilePath = "path/to/xml/file.xml"; XmlDocument xml = new XmlDocument(); xml.Load(xmlFilePath); JObject jsonObject = JObject.Parse(JsonConvert.SerializeXmlNode(xml));
-
使用System.Xml.Linq库:
using System.Xml.Linq; using System.Text.Json;// 从XML字符串转换为JSON字符串 string xmlString = "<root><name>John</name><age>30</age></root>"; XDocument xml = XDocument.Parse(xmlString); string jsonString = JsonSerializer.Serialize(xml.ToJson());// 从XML文件转换为JSON字符串 string xmlFilePath = "path/to/xml/file.xml"; XDocument xml = XDocument.Load(xmlFilePath); string jsonString = JsonSerializer.Serialize(xml.ToJson());// 从XML字符串转换为JsonObject string xmlString = "<root><name>John</name><age>30</age></root>"; XDocument xml = XDocument.Parse(xmlString); JsonObject jsonObject = JsonSerializer.Deserialize<JsonObject>(xml.ToJson());// 从XML文件转换为JsonObject string xmlFilePath = "path/to/xml/file.xml"; XDocument xml = XDocument.Load(xmlFilePath); JsonObject jsonObject = JsonSerializer.Deserialize<JsonObject>(xml.ToJson());
上述代码中,将XML转换为JSON时,使用了第三方库Newtonsoft.Json或者系统自带库System.Text.Json。
c# json 转 xml
在C#中将JSON转换为XML可以使用以下两种不同的实现方法:
-
使用Newtonsoft.Json库和System.Xml.Serialization库:
using Newtonsoft.Json; using System.Xml.Serialization;// 定义JSON数据结构 public class MyData {public string Name { get; set; }public int Age { get; set; } }// JSON转XML方法1 public static string ConvertJsonToXml(string json) {// 将JSON反序列化为对象var data = JsonConvert.DeserializeObject<MyData>(json);// 创建XML序列化器var serializer = new XmlSerializer(typeof(MyData));// 创建StringWriter来接收序列化结果using (var stringWriter = new StringWriter()){// 使用XmlSerializer将对象序列化为XMLserializer.Serialize(stringWriter, data);// 返回序列化结果return stringWriter.ToString();} }// JSON转XML方法2 public static string ConvertJsonToXml(string json) {// 使用Newtonsoft.Json库的JObject.Parse方法将JSON解析为JObject对象var jObject = JObject.Parse(json);// 使用System.Xml.Linq库的XDocument.Parse方法创建XDocument对象var xDocument = new XDocument();// 创建根节点var rootElement = new XElement("Root");// 将JObject转换为XML节点并添加到根节点中ConvertJObjectToXElement(jObject, rootElement);// 将根节点添加到XDocument中xDocument.Add(rootElement);// 返回XDocument的XML字符串表示return xDocument.ToString(); }// 将JObject递归转换为XML节点 private static XElement ConvertJObjectToXElement(JObject jObject, XElement parent) {foreach (var property in jObject.Properties()){var propertyElement = new XElement(property.Name);if (property.Value.Type == JTokenType.Object){// 如果是子JObject则递归调用ConvertJObjectToXElement((JObject)property.Value, propertyElement);}else if (property.Value.Type == JTokenType.Array){// 如果是JArray则递归遍历所有元素foreach (var item in property.Value.Children()){if (item.Type == JTokenType.Object){var arrayItemElement = new XElement(property.Name);ConvertJObjectToXElement((JObject)item, arrayItemElement);parent.Add(arrayItemElement);}else{var arrayItemElement = new XElement(property.Name, item.ToString());parent.Add(arrayItemElement);}}}else{// 处理基本数据类型propertyElement.Value = property.Value.ToString();}parent.Add(propertyElement);}return parent; }
以上代码分别使用了Newtonsoft.Json库和System.Xml.Serialization库,效果相同但实现方式不同。第一种方法使用XmlSerializer将JSON对象直接序列化为XML,适用于简单数据结构。第二种方法使用JObject解析JSON,然后使用XDocument和XElement将解析结果转换为XML,适用于复杂数据结构。
请注意,在使用这些库之前需要先导入相关的命名空间。
这篇关于c# Xml 和 Json 转换方法记录的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!