转换为base64会添加返回字符

adv*_*api 1 c# serialization

我正在尝试将字典转换为字符串结尾,然后将其转换为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);
    }
}
Run Code Online (Sandbox Code Playgroud)

我使用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);
Run Code Online (Sandbox Code Playgroud)

输出我是

eyJWTSI6IlhYLlhYWFhYWFhYWC5DbGllbnQuV1BGLlZpZXdNb2RlbHMuUG9ydGZvbGlvTWFuYWdl
ciJ9
Run Code Online (Sandbox Code Playgroud)

请注意,c1J9是一个新行,因为它在将字符串存储在我的主文件中时放置了字符.

来自Serializer的json是"{"VM":"XX.XXXXXXXXX.Client.WPF.ViewModels.PortfolioManager"}"

当我解码我得到的字符串

{"VM":"XX.XXXXXXXXX.Client.WPF.ViewModels.PortfolioManage
Run Code Online (Sandbox Code Playgroud)

在我获得新线之后

r"}
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

Mar*_*ell 7

你指定了Base64FormattingOptions.InsertLineBreaks.

如果你不想换行; 不要求他们!

public static string Base64Encode(string plainText)
{
    var plainTextBytes = System.Text.Encoding.UTF8.GetBytes(plainText);
    return Convert.ToBase64String(plainTextBytes);
}
Run Code Online (Sandbox Code Playgroud)