d00*_*00d 1 c# blazor system.text.json
我正在尝试反序列化从网络服务收到的 JSON。JSON 看起来像这样:
{ "data":
[
{"name": "john", "company": "microsoft"},
{"name": "karl", "company":"google"}
]
}
Run Code Online (Sandbox Code Playgroud)
我想要反序列化为的模型:
public class employee {
public string name {get; set;}
public string company {get; set;}
}
Run Code Online (Sandbox Code Playgroud)
问题是,由于该对象名称“data”,我无法使用 System.Text.Json 反序列化。我怎样才能使解串器解开/忽略数据标签并从该标签内的任何内容开始?
只需创建一个包装对象并将其用于反序列化:
public class Root {
public List<employee> data {get; set;}
}
var employees = JsonSerializer.Deserialize<Root>(jsonString).data;
Run Code Online (Sandbox Code Playgroud)
如果有很多不同的类型包含此模式,您可以将其设为Root 通用:
public class Root<T> {
public List<T> data {get; set;}
}
var employees = JsonSerializer.Deserialize<Root<employee>>(jsonString).data;
Run Code Online (Sandbox Code Playgroud)
Note that data contains a collection of employees not a single record.
另请注意,您可以使用推荐的Pascal 大小写作为属性名称,反序列化器应该能够拾取它(但它不能 - 您可以通过提供JsonSerializerOptions正确的PropertyNamingPolicy设置来帮助它)。