#c# #api #serialization #azure-devops #tfs-workitem
Вопрос:
Работа над извлечением рабочих элементов из Azure Devops:
Согласно этой статье, ответ выглядит так: https://docs.microsoft.com/en-us/rest/api/azure/devops/wit/work items/list?view=azure-devops-rest-6.0
{
"count": 2,
"value": [
{
"id": 297,
"rev": 1,
"fields": {
"System.AreaPath": "Fabrikam-Fiber-Git",
"System.Title": "Customer can sign in using their Microsoft Account",
...
}
},
{
"id": 298,
"rev": 1,
"fields": {
"System.AreaPath": "Fabrikam-Fiber-Git",
"System.Title": "Customer can log out",
...
}
}
]
}
Я предполагаю, что объект для этого будет выглядеть примерно так:
public class WorkItemModel
{
public int id { get; set; }
public int rev { get; set; }
public FieldsModel fields { get; set; }
}
public class FieldsModel
{
public string AreaPath { get; set; }
public string Title { get; set; }
}
Но как мне десериализовать это в соответствующие объекты? И как работает «Система.AreaPath» и «Система.Название» справишься?
Комментарии:
1. В
Newtonsoft.Json
, вы можете добавитьJsonProperty
атрибут в свойство, чтобы он выглядел такpublic class FieldsModel { [JsonProperty("System.AreaPath")] public string AreaPath {get; set;} ...
2. похоже, что доступны пакеты, содержащие необходимые вам модели: azure-devops
Ответ №1:
Вы можете создавать модели, как показано ниже:
public class FieldsModel
{
[JsonProperty("System.AreaPath")]
public string SystemAreaPath { get; set; }
[JsonProperty("System.Title")]
public string SystemTitle { get; set; }
}
public class WorkItemModel
{
public int id { get; set; }
public int rev { get; set; }
public FieldsModel fields { get; set; }
}
public class Root
{
public int count { get; set; }
public List<WorkItemModel> value { get; set; }
}
//using as below
// Root myDeserializedClass = JsonConvert.DeserializeObject<Root>(myJsonResponse);