前言
序列化是指將對象轉換成字節流,從而存儲對象或將對象傳輸到內存、數據庫或文件的過程。序列化常用的格式有三種,其中JSON序列化,由于 JSON 是一種開放標準,因此使用是較為廣泛的。本文將介紹在.NET 應用開發中使用的兩個 JSON 序列化器。
序列化器
1、Newtonsoft Json
這是一款高性能的Json序列化和解析工具,開源且免費。它提供了用于實現框架的核心服務的類。它提供了用于在 .NET 類型和 JSON 類型之間進行轉換的方法。
優點和特點
簡單示例
通過使用JsonConvert類的 SerializeObject 和 DeserializeObject 方法實現序列化與反序列化。(必須引入Newtonsoft.Json)
定義實現對象
using System;
namespace Fountain.WinConsole.SerializerDemo
{
/// <summary>
/// 地址
/// </summary>
public class Address
{
/// <summary>
/// 市
/// </summary>
public string City { get; set; }
/// <summary>
/// 詳細地址
/// </summary>
public string Detail { get; set; }
/// <summary>
/// 區
/// </summary>
public string District { get; set; }
/// <summary>
/// 省
/// </summary>
public string Province { get; set; }
/// <summary>
/// 鎮
/// </summary>
public string Town { get; set; }
}
}
序列化與反序列化
using Newtonsoft.Json;
using System;
using System.IO;
namespace Fountain.WinConsole.SerializerDemo
{
internal class Program
{
static void Main(string[] args)
{
// 創建實體對象
Recipient recipient = new Recipient()
{
Name = "張三",
Mobile = "1311111111",
Phone = "0752-00000000",
Address = new Address()
{
City = "廣州市",
Province = "廣東省",
Detail = "張三的101房",
District= "海珠區"
}
};
// 序列化操作
string output = JsonConvert.SerializeObject(recipient);
Console.WriteLine("序列化后:");
Console.WriteLine(output);
Console.WriteLine();
// 反序列化操作
Recipient deserializedRecipient = JsonConvert.DeserializeObject<Recipient>(output);
Console.WriteLine("反序列化后:");
Console.WriteLine(deserializedRecipient.Name);
Console.WriteLine(deserializedRecipient.Phone);
Console.WriteLine(deserializedRecipient.Address.City);
// 等待輸入退出
Console.ReadKey();
}
}
}
2、System.Text.Json
Microsoft 在 .NET Core 3.0 中發布了一個名為 System.Text.Json 的新命名空間,用于處理JSON數據的序列化和反序列化。(專注于高性能)
優點和特點
簡單示例
通過使用JsonSerializer類的 Serialize 和 Deserialize 方法實現序列化與反序列化。using System;
using System.Text.Encodings.Web;
using System.Text.Json;
namespace Fountain.WinConsole.SerializerDemo
{
internal class Program
{
static void Main(string[] args)
{
// 創建實體對象
Recipient recipient = new Recipient()
{
Name = "張三",
Mobile = "1311111111",
Phone = "0752-00000000",
Address = new Address()
{
City = "廣州市",
Province = "廣東省",
Detail = "張三的101房",
District= "海珠區"
}
};
// 解決中文問題
JsonSerializerOptions options = new JsonSerializerOptions
{
Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping,
WriteIndented = true
};
// 序列化操作
string output = JsonSerializer.Serialize(recipient,options);
Console.WriteLine("序列化后:");
Console.WriteLine(output);
Console.WriteLine();
// 反序列化操作
Recipient deserializedRecipient = JsonSerializer.Deserialize<Recipient>(output);
Console.WriteLine("反序列化后:");
Console.WriteLine(deserializedRecipient.Name);
Console.WriteLine(deserializedRecipient.Phone);
Console.WriteLine(deserializedRecipient.Address.City);
// 等待輸入退出
Console.ReadKey();
}
}
}
小結
以上是.NET 序列化實現JSON格式的常用序列化工具,簡單介紹其特點及簡單實現示例。
該文章在 2024/8/19 10:58:40 編輯過