【发布时间】:2020-01-30 21:08:26
【问题描述】:
我只是尝试使用 Json.NET 对 Bson 格式的字符串数组进行序列化和反序列化,但以下代码失败:
var jsonSerializer = new JsonSerializer();
var array = new string [] { "A", "B" };
// Serialization
byte[] bytes;
using (var ms = new MemoryStream())
using (var bson = new BsonWriter(ms))
{
jsonSerializer.Serialize(bson, array, typeof(string[]));
bytes = ms.ToArray();
}
// Deserialization
using (var ms = new MemoryStream(bytes))
using (var bson = new BsonReader(ms))
{
// Exception here
array = jsonSerializer.Deserialize<string[]>(bson);
}
异常信息:
无法将当前 JSON 对象(例如 {"name":"value"})反序列化为类型“System.String[]”,因为该类型需要 JSON 数组(例如 [1,2,3])才能正确反序列化.
要修复此错误,要么将 JSON 更改为 JSON 数组(例如 [1,2,3]),要么将反序列化类型更改为正常的 .NET 类型(例如,不是像整数这样的原始类型,而不是可以从 JSON 对象反序列化的集合类型(如数组或列表)。也可以将 JsonObjectAttribute 添加到类型中以强制它从 JSON 对象反序列化。
我怎样才能让它工作?
【问题讨论】: