C# 如何将字典序列化为base64

C# 如何将字典序列化为base64,c#,C#,我需要序列化headers对象,以字符串格式(可能是base64)存储它。 字典将只包含字符串或Int值,因此应该没有问题 Dictionary<String, Object> headers = RequestHeaders.ProcessHeaders(HttpContext.Current); Dictionary headers=RequestHeaders.ProcessHeaders(HttpContext.Current); 当然,关键是能够将base64字符串

我需要序列化
headers
对象,以字符串格式(可能是base64)存储它。
字典
将只包含字符串或Int值,因此应该没有问题

 Dictionary<String, Object> headers = RequestHeaders.ProcessHeaders(HttpContext.Current); 
Dictionary headers=RequestHeaders.ProcessHeaders(HttpContext.Current);

当然,关键是能够将base64字符串反序列化回Dictionary。

您不能将
字典
序列化为XML,但可以将其序列化为JSON:

string json = JsonConvert.SerializeObject(dictionary, Formatting.None);
byte[] bytes = Encoding.UTF8.GetBytes(json);
string base64String = Convert.ToBase64String(bytes);`
要反序列化:

byte[] bytes = Convert.FromBase64String(base64String);
string json = Encoding.UTF8.GetString(bytes);
Dictionary<string, object> deserializedDict = JsonConvert.DeserializeObject<Dictionary<string, object>>(json);
byte[]bytes=Convert.FromBase64String(base64String);
string json=Encoding.UTF8.GetString(字节);
Dictionary deserializedDict=JsonConvert.DeserializeObject(json);

您不能将
字典
序列化为XML,但可以将其序列化为JSON:

string json = JsonConvert.SerializeObject(dictionary, Formatting.None);
byte[] bytes = Encoding.UTF8.GetBytes(json);
string base64String = Convert.ToBase64String(bytes);`
要反序列化:

byte[] bytes = Convert.FromBase64String(base64String);
string json = Encoding.UTF8.GetString(bytes);
Dictionary<string, object> deserializedDict = JsonConvert.DeserializeObject<Dictionary<string, object>>(json);
byte[]bytes=Convert.FromBase64String(base64String);
string json=Encoding.UTF8.GetString(字节);
Dictionary deserializedDict=JsonConvert.DeserializeObject(json);

首先,我要澄清的是,您不能从Dictionary序列化到Base64,因为Dictionary是一种结构,Base64是一种编码格式

您需要从字典序列化为XML(不受.NET支持,但您可以为此构建自己的序列化程序/反序列化程序,或者使用第三方序列化程序),或者JSON,甚至二进制(如果不需要人类可读)。然后,可以将序列化的结果编码为Base64


ASP.NET ViewState的工作原理与此类似(但我不认为ViewState是一个字典),但它是一个序列化然后进行Base64编码的结构

首先我要澄清的是,您不能从Dictionary序列化到Base64,因为Dictionary是一种结构,Base64是一种编码格式

您需要从字典序列化为XML(不受.NET支持,但您可以为此构建自己的序列化程序/反序列化程序,或者使用第三方序列化程序),或者JSON,甚至二进制(如果不需要人类可读)。然后,可以将序列化的结果编码为Base64


ASP.NET ViewState的工作原理与此类似(但我不认为ViewState是一个字典),但它是一个序列化然后进行Base64编码的结构

我在哪里写的我想序列化为XML?当然,重点是能够将base64字符串反序列化回Dictionary。没有,但这是一个非常常见的问题,我认为值得一提。是否有任何特定的格式要序列化到?谢谢!这是一个非常好的答案,不知道为什么其他用户说这不能做到。@user1662812,大多数人认为只要你说“Serialize”,你就需要XML格式的数据。如前所述,.NET不支持将字典序列化为现成的XML,因此他们说这是无法做到的…如果您对它应用足够的知识,任何事情都可以做到!我在哪里写的我想序列化为XML?当然,重点是能够将base64字符串反序列化回Dictionary。没有,但这是一个非常常见的问题,我认为值得一提。是否有任何特定的格式要序列化到?谢谢!这是一个非常好的答案,不知道为什么其他用户说这不能做到。@user1662812,大多数人认为只要你说“Serialize”,你就需要XML格式的数据。如前所述,.NET不支持将字典序列化为现成的XML,因此他们说这是无法做到的…如果您对它应用足够的知识,任何事情都可以做到!