如何将Dictionary序列化为base64

时间:2012-10-09 09:51:55

标签: c#

我需要序列化headers对象以字符串格式存储它,可能是base64。 Dictionary<String, Object>只有String或Int值,所以应该没有问题。

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

此外,当然重点是能够将base64字符串反序列化为Dictionary。

2 个答案:

答案 0 :(得分:3)

您无法将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);

答案 1 :(得分:0)

首先我可以澄清一下你不能从Dictionary到Serial64 Serialize,因为Dictionary是一个结构,Base64是一种编码格式。

您需要从Dictionary序列化到XML(.NET不支持,但您可以为此构建自己的序列化器/解串器,或使用第三方),或JSON,如果不需要,则需要二进制人类可读。然后,您可以将序列化的结果编码为Base64。

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