2012-10-09 29 views
1

我需要序列化headers對象以字符串格式存儲它,可能是base64。 Dictionary<String, Object>將只有String或Int值,所以應該沒有問題。如何序列化字典到base64

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

此外,當然,重點是能夠將base64字符串反序列化爲字典。

回答

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); 
+2

我在哪裏寫我想序列化到XML? – user1662812

+0

此外,當然重點是能夠將base64字符串反序列化爲Dictionary。 – user1662812

+0

沒有地方,但它是一個常見的問題,我認爲它值得一提。有什麼特別的格式,你想序列化? –

0

首先我澄清,你不能序列從字典到Base64,因爲Dictionary是一個結構,Base64是一種編碼格式。

您需要從Dictionary到XML(不受.NET支持,但您可以爲此構建您自己的序列化器/反序列化器,或使用第三方序列器)或JSON,或者甚至是不需要的二進制序列是人類可讀的。然後,您可以將序列化結果編碼爲Base64。

ASP.NET ViewStates的工作類似於此(但我不認爲ViewState是一本字典),但它是一個序列化,然後Base64編碼的結構。