我正在使用 System.Text.Json。
我有以下模型:
public class Contacts
{
[JsonPropertyName("id")]
public long Id { get; set; }
[JsonPropertyName("name")]
public string Name { get; set; } = string.Empty;
[JsonPropertyName("paused")]
public bool Paused { get; set; }
[JsonPropertyName("type")]
public string Type { get; set; } = string.Empty;
[JsonPropertyName("owner")]
public bool Owner { get; set; }
[JsonPropertyName("notification_targets")]
public NotificationTargets? NotificationTargets { get; set; }
[JsonPropertyName("teams")]
public List<Teams>? Teams { get; set; }
}
public class NotificationTargets
{
[JsonPropertyName("email")]
public List<Email>? Email { get; set; }
}
public class Email
{
[JsonPropertyName("severity")]
public string Severity { get; set; } = string.Empty;
[JsonPropertyName("address")]
public string Address { get; set; } = string.Empty;
}
public class Teams
{
[JsonPropertyName("id")]
public long Id { get; set; }
[JsonPropertyName ("name")]
public string Name { get; set; } = string.Empty;
}
我的 Json 是:
{
"contacts": [
{
"id": 14960844,
"name": "firstname test",
"paused": false,
"type": "user",
"owner": true,
"notification_targets": {
"email": [
{
"severity": "HIGH",
"address": "[email protected]"
}
]
},
"teams": [
{
"id": 804736,
"name": "Team 1"
}
]
}
]
}
以上内容存储在字符串变量中。
我只需调用:
var myContacts = JsonSerializer.Deserialize<List<Contacts>>(myJsonString);
并且我不断收到以下错误:
System.Text.Json.JsonException:'无法将 JSON 值转换为 System.Collections.Generic.List`1[VTMShared.Models.Contacts]。路径:$ | LineNumber:0 | BytePositionInLine:1。'
我实在看不出这有什么问题。
您需要将其反序列化为并从实例中
Root
提取。Contacts
Root
无需定义
Root
类,您可以使用JsonDocument
:您可以使用另一个
Root
类来反序列化整个 JSON,但您也可以尝试在没有 root 的情况下执行此操作 - 然后可以将其解析为包含一个项目的字典: