【发布时间】:2022-11-16 13:47:56
【问题描述】:
我正在将一个 JSON 列表反序列化为 object[] 并期望得到一个对象数组。但是,我想反序列化为更具体的类型。有没有办法做到这一点,可能提供序列化的确切类型?不幸的是,我无法在我的代码中比 object[] 更具体......
using System.Text.Json;
namespace Tests.DeSerialize;
class Program
{
public static void Main(string[] args)
{
object[] objs = new object[]{
42,
"foobar",
false,
new Example {
Name = "example",
}
};
foreach (var obj in objs)
{
Console.WriteLine(obj.GetType().Name);
}
var serialized = JsonSerializer.Serialize(objs);
Console.WriteLine();
Console.WriteLine(serialized);
Console.WriteLine();
object[] deSerializedObjs = JsonSerializer.Deserialize<object[]>(serialized);
foreach (var obj in deSerializedObjs)
{
Console.WriteLine(obj.GetType().FullName);
}
}
}
public class Example
{
public string Name { get; set; }
public override string ToString() => $"{GetType().Name}(\"{Name}\")";
}
输出:
Int32
String
Boolean
Example
[42,"foobar",false,{"Name":"example"}]
System.Text.Json.JsonElement
System.Text.Json.JsonElement
System.Text.Json.JsonElement
System.Text.Json.JsonElement
有没有办法以某种方式将确切的类型编码到序列化文本中?
【问题讨论】:
-
ObjectAsPrimitiveConverter从this answer到C# - Deserializing nested json to nested Dictionary<string, object>是否满足您的需求?
标签: c# json serialization typing system.text.json