2012-10-09 3 views
1

headers 개체를 문자열 형식 (아마도 base64)으로 직렬화해야합니다. Dictionary<String, Object>은 String 또는 Int 값만 가지므로 아무런 문제가 없어야합니다.Dictionary를 base64로 serialize하는 방법

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

물론 요점은 base64 문자열을 사전으로 역 직렬화 할 수 있다는 것입니다.

답변

3

당신은 XML로 Dictionary 직렬화 할 수는 없지만 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 문자열을 사전으로 역 직렬화 할 수 있다는 것입니다. – user1662812

+0

아무데도 언급 할 가치가 없다고 생각되는 일반적인 문제입니다. 직렬화 할 특정 형식이 있습니까? –

0

을 당신이 사전에서에 직렬화 수 없음을 명확히 할 수 있습니다 Base64는 사전이 구조이기 때문에 Base64는 인코딩 형식입니다.

Dictionary에서 XML로 직렬화해야합니다 (.NET에서는 지원되지 않지만 자신 만의 serializer/deserializer를 만들거나 타사의 serializer를 사용할 수 있음) 또는 JSON 또는 필요하지 않은 경우 Binary로 변환해야합니다. 인간이 읽을 수 있어야합니다. 그런 다음 직렬화 결과를 Base64로 인코딩 할 수 있습니다.

ASP.NET ViewStates는 이와 비슷하게 작동하지만 (ViewState는 사전이라고 생각하지 않습니다), 직렬화 된 다음 Base64로 인코딩 된 구조입니다.

관련 문제