【发布时间】:2023-03-09 12:37:01
【问题描述】:
我有一些数据是字节数组byte[],我需要在 JSON 中将它们呈现为 base64,但在 BSON 中呈现为原始字节数组。
如何在 JSON.Net 中轻松做到这一点?
所以,到目前为止,我有这样的事情:
class Data
{
public byte[] Bytes{get;set;}
}
转成BSON就好了,但是转成JSON的时候,当然不是base64编码,当成字符串处理
【问题讨论】:
我有一些数据是字节数组byte[],我需要在 JSON 中将它们呈现为 base64,但在 BSON 中呈现为原始字节数组。
如何在 JSON.Net 中轻松做到这一点?
所以,到目前为止,我有这样的事情:
class Data
{
public byte[] Bytes{get;set;}
}
转成BSON就好了,但是转成JSON的时候,当然不是base64编码,当成字符串处理
【问题讨论】:
嗯,在 Json.Net 6.0.1 中使用以下代码,它似乎可以按您想要的方式工作,无需特殊处理:字节数组转换为 base-64 字符串,反之亦然。您是在以不同的方式序列化对象,还是使用旧版本?如果没有,你能提供一些代码来演示这个问题吗?
string s = "Foo Bar Baz Quux";
Data data = new Data
{
Bytes = Encoding.UTF8.GetBytes(s)
};
string json = JsonConvert.SerializeObject(data);
Console.WriteLine(json);
data = JsonConvert.DeserializeObject<Data>(json);
Console.WriteLine(Encoding.UTF8.GetString(data.Bytes));
输出:
{"Bytes":"Rm9vIEJhciBCYXogUXV1eA=="}
Foo Bar Baz Quux
【讨论】: