将 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; }
}
我是 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; }
}