1

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

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

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

4

2 回答 2

6

您不能将 a 序列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);
于 2012-10-09T10:12:31.563 回答
0

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

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

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

于 2012-10-09T10:43:45.320 回答