我试图将Dictionary转换为字符串end,然后将其转换为Base64,以便将其保存到另一个字符串。
这是我的代码
public class StringBase64Helper
{
public static string Base64Encode(string plainText)
{
var plainTextBytes = System.Text.Encoding.UTF8.GetBytes(plainText);
return Convert.ToBase64String(plainTextBytes, Base64FormattingOptions.InsertLineBreaks);
}
public static string Base64Decode(string base64EncodedData)
{
var base64EncodedBytes = Convert.FromBase64String(base64EncodedData);
return System.Text.Encoding.UTF8.GetString(base64EncodedBytes);
}
}
我使用servicestack来序列化它
var dictionary = new Dictionary<string,object>();
dictionary.Add("VM","XX.XXXXXXXXX.Client.WPF.ViewModels.PortfolioManager");
var rr =ServiceStack.Text.JsonSerializer.SerializeToString(dictionary);
var str = StringBase64Helper.Base64Encode(rr);
输出I
eyJWTSI6IlhYLlhYWFhYWFhYWC5DbGllbnQuV1BGLlZpZXdNb2RlbHMuUG9ydGZvbGlvTWFuYWdl
ciJ9
请注意,c1J9是一个新行,因为它放了&#13;&#13; 将字符串存储在主文件中时的字符。
来自Serializer的json是&#34; {&#34; VM&#34;:&#34; XX.XXXXXXXXX.Client.WPF.ViewModels.PortfolioManager&#34;}&#34;
当我解码我得到的字符串
{"VM":"XX.XXXXXXXXX.Client.WPF.ViewModels.PortfolioManage
在新线之后我得到了
r"}
我做错了什么?
答案 0 :(得分:7)
您指定了Base64FormattingOptions.InsertLineBreaks
。
如果你不想换行;不要求他们!
public static string Base64Encode(string plainText)
{
var plainTextBytes = System.Text.Encoding.UTF8.GetBytes(plainText);
return Convert.ToBase64String(plainTextBytes);
}