当前位置: 首页 > news >正文

c# Xml 和 Json 转换方法记录

c# xml 转 json

在C#中,可以使用下面几种方法将XML转换为JSON:

  1. 使用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));
  2. 使用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可以使用以下两种不同的实现方法:

  1. 使用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,适用于复杂数据结构。

    请注意,在使用这些库之前需要先导入相关的命名空间。

http://www.lryc.cn/news/339005.html

相关文章:

  • OpenHarmony南向开发案例:【智能垃圾桶】
  • 每日一题---OJ题: 旋转数组
  • 基于单链表的通讯录C语言实现
  • 【深度学习】YOLO-World: Real-Time Open-Vocabulary Object Detection,目标检测
  • debian安装和基本使用
  • nvm安装详细教程(安装nvm、node、npm、cnpm、yarn及环境变量配置)
  • 优优嗨聚集团:如何优雅地解决个人债务问题,一步步走向财务自由
  • SpringCloud实用篇(四)——Nacos
  • 【嵌入式基础知识学习】AD/DA—数模/模数转换
  • Swift中的结构体
  • Selenium - java - 屏幕截图
  • 【论文阅读——SplitFed: When Federated Learning Meets Split Learning】
  • Python使用方式介绍
  • 浅述python中NumPy包
  • jvm的面试回答
  • 打不动的蓝桥杯
  • 学习笔记——C语言基本概念文件——(13)
  • 【MySQL】事务篇
  • tsconfig.json文件常用配置
  • 【Linux】tcpdump P1 - 网络过滤选项
  • 网络篇04 | 应用层 mqtt(物联网)
  • Transformer模型-decoder解码器,target mask目标掩码的简明介绍
  • All in One:Prometheus 多实例数据统一管理最佳实践
  • mysql报错-mysql服务启动停止后,某些服务在未由其他服务或程序使用时将自动停止和数据恢复
  • Java开发从入门到精通(二十):Java的面向对象编程OOP:File文件操作的增删改查
  • 10.list的模拟实现(普通迭代器和const迭代器的类模板)
  • 【电控笔记5】电流环速度环三环参数整定
  • AI克隆语音(基于GPT-SoVITS)
  • 小蚕爬树问题
  • 科研学习|科研软件——如何使用SmartPLS软件进行结构方程建模