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
类型的内存区域中。它将是 string
或 JsonElement
或其他。但是您可以在 Object
类型变量中保留对它的引用。
例如
foreach (Object _ in data) Console.WriteLine(_.GetType().FullName);
也可以。
我想将我的 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
类型的内存区域中。它将是 string
或 JsonElement
或其他。但是您可以在 Object
类型变量中保留对它的引用。
例如
foreach (Object _ in data) Console.WriteLine(_.GetType().FullName);
也可以。