System.Text.Json JsonSerializer.Deserialize<TValue>(...) 无法反序列化 object[] 类型

System.Text.Json JsonSerializer.Deserialize<TValue>(...) cannot deserialize object[] type

我想将我的 JSON 字符串值解析为 object[] 类型,但它总是 return System.Text.Json.JsonElement[] 类型。

var data = JsonSerializer.Deserialize<object[]>("[\"abcd\",\"efgh\",\"ijkl\",\"mnop\"]", null);
foreach (var _ in data) Console.WriteLine(_.GetType().FullName);

预期输出:

System.Object
System.Object
System.Object
System.Object

实际输出:

System.Text.Json.JsonElement
System.Text.Json.JsonElement
System.Text.Json.JsonElement
System.Text.Json.JsonElement

这是怎么回事?

没有错。

您正在获取 Object 个元素的数组,但实际元素的类型为 JsonElement。继承自Object.

此外,您不能将 \"abcd\" 字符串存储在 Object 类型的内存区域中。它将是 stringJsonElement 或其他。但是您可以在 Object 类型变量中保留对它的引用。 例如 foreach (Object _ in data) Console.WriteLine(_.GetType().FullName); 也可以。