【发布时间】:2020-08-15 18:07:20
【问题描述】:
我正在尝试像这样反序列化 JSON:
{ "Parameters": [ 1, "2", true, false, null ] }
使用System.Text.Json 序列化程序。目标类如下所示:
public class Payload {
public object[] Parameters { get; set; }
}
参数总是原始值,如数字、字符串、布尔值等。
但看起来System.Text.Json 填充了我的Parameters 数组
JsonElement 值而不是普通的标量值。这是代码示例:
var payload = new Payload {
Parameters = new object[] {
1, "2", true, false, null
}
};
var json = JsonSerializer.Serialize(payload);
// result: {"Parameters":[1,"2",true,false,null]}
var deserialized = JsonSerializer.Deserialize<Payload>(json);
// result: deserialized.Parameters are all `JsonElement` values
使用Payload类的代码不依赖System.Text.Json,
它与序列化程序无关。有没有办法反序列化对象数组
使用System.Text.Json 并返回纯标量值而不是JsonElements?
【问题讨论】:
-
Deserialize inferred types to object properties 文章中准确解释了此行为。您是否尝试关注并写自己的
JsonConverter<object>? -
谢谢 Pavel,看来我错过了文档中的这篇文章。
标签: c# json deserialization system.text.json