c# Xml 和 Json 转换方法记录

2024-04-12 06:36

本文主要是介绍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,适用于复杂数据结构。

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

这篇关于c# Xml 和 Json 转换方法记录的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/896370

相关文章

轻松上手MYSQL之JSON函数实现高效数据查询与操作

《轻松上手MYSQL之JSON函数实现高效数据查询与操作》:本文主要介绍轻松上手MYSQL之JSON函数实现高效数据查询与操作的相关资料,MySQL提供了多个JSON函数,用于处理和查询JSON数... 目录一、jsON_EXTRACT 提取指定数据二、JSON_UNQUOTE 取消双引号三、JSON_KE

MySQL数据库函数之JSON_EXTRACT示例代码

《MySQL数据库函数之JSON_EXTRACT示例代码》:本文主要介绍MySQL数据库函数之JSON_EXTRACT的相关资料,JSON_EXTRACT()函数用于从JSON文档中提取值,支持对... 目录前言基本语法路径表达式示例示例 1: 提取简单值示例 2: 提取嵌套值示例 3: 提取数组中的值注意

SpringBoot定制JSON响应数据的实现

《SpringBoot定制JSON响应数据的实现》本文主要介绍了SpringBoot定制JSON响应数据的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们... 目录前言一、如何使用@jsonView这个注解?二、应用场景三、实战案例注解方式编程方式总结 前言

C#比较两个List集合内容是否相同的几种方法

《C#比较两个List集合内容是否相同的几种方法》本文详细介绍了在C#中比较两个List集合内容是否相同的方法,包括非自定义类和自定义类的元素比较,对于非自定义类,可以使用SequenceEqual、... 目录 一、非自定义类的元素比较1. 使用 SequenceEqual 方法(顺序和内容都相等)2.

C#使用DeepSeek API实现自然语言处理,文本分类和情感分析

《C#使用DeepSeekAPI实现自然语言处理,文本分类和情感分析》在C#中使用DeepSeekAPI可以实现多种功能,例如自然语言处理、文本分类、情感分析等,本文主要为大家介绍了具体实现步骤,... 目录准备工作文本生成文本分类问答系统代码生成翻译功能文本摘要文本校对图像描述生成总结在C#中使用Deep

C#从XmlDocument提取完整字符串的方法

《C#从XmlDocument提取完整字符串的方法》文章介绍了两种生成格式化XML字符串的方法,方法一使用`XmlDocument`的`OuterXml`属性,但输出的XML字符串不带格式,可读性差,... 方法1:通过XMLDocument的OuterXml属性,见XmlDocument类该方法获得的xm

C#多线程编程中导致死锁的常见陷阱和避免方法

《C#多线程编程中导致死锁的常见陷阱和避免方法》在C#多线程编程中,死锁(Deadlock)是一种常见的、令人头疼的错误,死锁通常发生在多个线程试图获取多个资源的锁时,导致相互等待对方释放资源,最终形... 目录引言1. 什么是死锁?死锁的典型条件:2. 导致死锁的常见原因2.1 锁的顺序问题错误示例:不同

JSON字符串转成java的Map对象详细步骤

《JSON字符串转成java的Map对象详细步骤》:本文主要介绍如何将JSON字符串转换为Java对象的步骤,包括定义Element类、使用Jackson库解析JSON和添加依赖,文中通过代码介绍... 目录步骤 1: 定义 Element 类步骤 2: 使用 Jackson 库解析 jsON步骤 3: 添

将sqlserver数据迁移到mysql的详细步骤记录

《将sqlserver数据迁移到mysql的详细步骤记录》:本文主要介绍将SQLServer数据迁移到MySQL的步骤,包括导出数据、转换数据格式和导入数据,通过示例和工具说明,帮助大家顺利完成... 目录前言一、导出SQL Server 数据二、转换数据格式为mysql兼容格式三、导入数据到MySQL数据

C#提取PDF表单数据的实现流程

《C#提取PDF表单数据的实现流程》PDF表单是一种常见的数据收集工具,广泛应用于调查问卷、业务合同等场景,凭借出色的跨平台兼容性和标准化特点,PDF表单在各行各业中得到了广泛应用,本文将探讨如何使用... 目录引言使用工具C# 提取多个PDF表单域的数据C# 提取特定PDF表单域的数据引言PDF表单是一