将 base64 字符串转换为 JSON .NET

Convert base64 string to JSON .NET

我是 C# 的新手,我有一个客户端请求,其值是 base64 编码的。我正在尝试解码字符串并使用 JSON 对象。这是我调用的用于解码 base64 字符串的函数。

    public string FromBase64(string data)
    {
        if (string.IsNullOrEmpty(data)) return data;
        var bytes = Convert.FromBase64String(data);
        return UTF8Encoding.UTF8.GetString(bytes);
    }

如何转换此函数的 return 值或将其修改为 JSON 以便解析其值?

例如,现在对于输入值data e0tleSA6ICdhYmMnLCBpc0V4aXN0czogJ3RydWUnfQ==的值,当前输出是"{Key : 'abc', isExists: 'true'}"。 我想要的输出是 {Key : 'abc', isExists: 'true'}

您将 base64 转换为字符串的代码工作正常,因此现在您需要创建一个对应于您的 JSON 的 class 并反序列化该方法的结果:

var content = FromBase64(myBase64);
var myObject = JsonSerializer.Deserialize<MyObject>(content);

希望我正确理解了您的问题,这是我的通用方法的代码示例,它可以通过反序列化 base-64 字符串来创建 T 对象:

    public static T FromBase64<T>(string data)
    {
        if (string.IsNullOrEmpty(data))
        {
            return default;
        }
        
        var bytes = Convert.FromBase64String(data);
        var parsedString = Encoding.UTF8.GetString(bytes);
        return JsonSerializer.Deserialize<T>(parsedString);
    }

你有一个base-64字符串,而且你看起来是一个反序列化的对象;所以你需要多个步骤:

  • 将 base-64 解码为二进制
  • 将二进制解释为文本
  • 定义与预期数据匹配的对象模型
  • 将文本反序列化为对象模型

例如:

    static void Main()
    {
        var base64 = @"e0tleSA6ICdhYmMnLCBpc0V4aXN0czogJ3RydWUnfQ==";
        var blob = Convert.FromBase64String(base64);
        var json = Encoding.UTF8.GetString(blob);
        // string: "{Key : 'abc', isExists: 'true'}"
 
        var obj = JsonConvert.DeserializeObject<MyPayload>(json);
        Console.WriteLine(obj.Key);
        Console.WriteLine(obj.IsExists);
    }

    class MyPayload
    {
        public bool IsExists { get; set; }
        public string Key { get; set; }
    }