如何在 .NET 中使用 XML 和 JSON?
使用 JSON
JSON 是一种数据格式,已成为 XML 的一种流行替代方案。它简单明了,语法类似于 JavaScript 对象。事实上,JSON 代表 JavaScript 对象表示法。最新版本的 .NET 提供了对 JSON 数据的内置支持。
System.Text.Json 命名空间提供了高性能、低分配的功能来处理 JSON 数据。这些功能包括将对象序列化为 JSON 和将 JSON 反序列化回对象。它还提供类型来创建内存中的文档对象模型 (DOM),用于访问 JSON 文档中的任何元素,从而提供数据的结构化视图。
序列化 JSON
假设您有一个名为 Point 的类,它有两个属性 X 和 Y,如下所示。
class Point{
public int X { get; set; }
public int Y { get; set; }
}要序列化 Point 类的一个实例,您将使用 JsonSerializer 类中定义的 Serialize() 方法,该方法位于 System.Text.Json 命名空间中。
var point = new Point { X = 10, Y = 20 };
string jsonString = JsonSerializer.Serialize(point);
Console.WriteLine(jsonString); // {"X":10,"Y":20}要以正确的格式和缩进打印 json 数据,您可以将 JsonSerializerOptions 传递给 Serializer 方法,并将 WriteIndented 属性指定为 true。
string formattedString = JsonSerializer.Serialize(point, new JsonSerializerOptions { WriteIndented = true });
Console.WriteLine(formattedString);从 JSON 反序列化
要从 JSON 数据反序列化到 C# 对象,您可以使用 JSONSerializer 类上的泛型 Deserialize<T> 方法。例如,
string jsonData = "{\"X\":10,\"Y\":20}";
Point q = JsonSerializer.Deserialize<Point>(jsonData);
Console.WriteLine(q.X + " " + q.Y); // prints 10 20使用 XML
XML 是一种非常流行的数据格式,用于存储和传输数据。.NET 提供了许多 API 用于在 C# 编程语言中使用 XML。Linq to XML 是通用 XML 处理的主要机制。它提供了一个轻量级、Linq 友好的 XML 文档对象模型以及一组查询运算符。System.XML.Linq 命名空间包含与 Linq to XML 相关的类型。
考虑以下 XML 数据。它有一个根元素 employee,具有两个属性 id 和 status,其值分别为 '231' 和 'active'。该元素有三个子元素:firstname、lastname 和 salary。
<?xml version="1.0" encoding="utf-8"?> <employee id="231" status="active"> <firstname>David</firstname> <lastname>Block</lastname> <salary>45000</salary> </employee>
Linq to XML API 解析 XML 数据,并将每个元素、属性、值和内容表示为具有存储相关数据的属性的对象。它形成了一个完全表示文档的对象树,这棵树称为 DOM,代表文档对象模型。
XElement 和 XDocument 提供静态 Load 和 Parse 方法,用于从 XML 数据源构建文档对象模型。Load 从文件、流、URL、TextReader 和 XmlReader 构建 DOM;而 Parse 从字符串构建 DOM。
string path = Path.Combine("Data", "data.xml");
string xmlData = File.ReadAllText(path);
XElement employee = XElement.Parse(xmlData);Elements() 方法提供元素的所有子元素。例如 -
foreach (var elem in employee.Elements()){
Console.WriteLine(elem.Name);
}元素上的 ToString() 方法返回带有换行符和正确格式的 XML 字符串。例如 -
Console.Write(employee.ToString()); /* Prints <employee id="123" status="active"> <firstname>David</firstname> <lastname>Block</lastname> <salary>45000</salary> </employee>% */
示例
注意:JSON 库仅包含在 .NET Core 中。对于早期版本,必须导入 Nuget 包。
using System;
using System.Text.Json;
class Program{
static void Main(string[] args){
var point = new Point { X = 10, Y = 20 };
string jsonString = JsonSerializer.Serialize(point);
Console.WriteLine(jsonString); // {"X":10,"Y":20}
string formattedString = JsonSerializer.Serialize(point, new JsonSerializerOptions { WriteIndented = true });
Console.WriteLine(formattedString);
string jsonData = "{\"X\":10,\"Y\":20}";
Point q = JsonSerializer.Deserialize<Point>(jsonData);
Console.WriteLine(q.X + " " + q.Y); // prints 10 20
}
}
class Point{
public int X { get; set; }
public int Y { get; set; }
}输出
{"X":10,"Y":20}{
"X": 10,
"Y": 20
}
10 20
数据结构
网络
关系型数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP