c# - 将 base64 字符串转换为 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);
}
如何转换此函数的返回值或将其修改为 JSON,以便解析其值?
例如,现在对于 input value 的值data
e0tleSA6ICdhYmMnLCBpc0V4aXN0czogJ3RydWUnfQ==
,当前的输出是"{Key : 'abc', isExists: 'true'}"
。我想要的输出是{Key : 'abc', isExists: 'true'}
解决方案
你有一个 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; }
}
推荐阅读
- postgresql - 在 Kubernetes 中运行的 Postgres - 限制网络带宽
- swiftui - SwiftUI:LazyHStack 中的 Kingfisher KFImage 闪烁图像
- amazon-web-services - 如何使用 Route53 设置 Amazon MQ RabbitMQ 集群
- apache-kafka - Kafka 集群 - 没有使用一个代理的问题
- amazon-s3 - 是否可以使用 distcp 直接写入最终文件?
- r - 如何获取 CRAN 上所有包的 github repo url?
- c# - WinForms 帮助提供程序。是否可以使用附加参数打开 HTML 文件?
- html - 使用 Postman 从带有 Cheerio 的 HTML 响应中提取值
- javascript - Pendo 集成:注销后匿名访问者
- php - Laravel 作业不更新