JsonPropertyAttribute не работает с. по названию - PullRequest
3 голосов
/ 05 марта 2020

Я создаю Azure конечную точку веб-крючка DevOps для триггера создания рабочего элемента, используя ASP. NET Core 3.1. Полезная нагрузка, создаваемая DevOps, имеет. символы в именах некоторых свойств в массиве Fields

"System.AreaPath": "FabrikamCloud",
"System.TeamProject": "FabrikamCloud",
"System.IterationPath": "FabrikamCloud\\Release 1\\Sprint 1",
"System.WorkItemType": "Bug",
"System.State": "New",
"System.Reason": "New defect reported",
"System.CreatedDate": "2014-07-15T17:42:44.663Z",
"System.CreatedBy": {

Я создал модели для представления различных уровней графа объектов, и родители красиво сериализуют, но даже если я соответствующим образом аннотирую эти свойства, они не десериализация и все значения установлены по умолчанию

public class Fields
{
    [JsonProperty("System.AreaPath")]
    public string SystemAreaPath { get; set; }

    [JsonProperty("System.TeamProject")]
    public string SystemTeamProject { get; set; }

    [JsonProperty("System.IterationPath")]
    public string SystemIterationPath { get; set; }

    [JsonProperty("System.WorkItemType")]
    public string SystemWorkItemType { get; set; }

    [JsonProperty("System.State")]
    public string SystemState { get; set; }

    [JsonProperty("System.Reason")]
    public string SystemReason { get; set; }

    [JsonProperty("System.CreatedDate")]
    public DateTime SystemCreatedDate { get; set; }

    [JsonProperty("System.CreatedBy")]
    public UserDetails SystemCreatedBy { get; set; }

    [JsonProperty("System.ChangedDate")]
    public DateTime SystemChangedDate { get; set; }

    [JsonProperty("System.ChangedBy")]
    public UserDetails SystemChangedBy { get; set; }

    [JsonProperty("System.Title")]
    public string SystemTitle { get; set; }

Кто-нибудь знает, как обращаться с именами свойств, содержащими десятичную точку?

Ответы [ 2 ]

2 голосов
/ 05 марта 2020

Вы можете использовать

[JsonPropertyName("System.AreaPath")]

вместо

[JsonProperty("System.AreaPath")] 

из System.Text. Json, который используется по умолчанию в. net core 3, как указано в @ Hintee

2 голосов
/ 05 марта 2020

Атрибут JsonProperty работает просто отлично, если вы используете Newtonsoft Json для обработки JSON сериализации / десериализации. Но поскольку pNet Core 3+ использует System.Text. Json по умолчанию.

Вот статья для настройки его на использование Newtonsoft:

https://dotnetcoretutorials.com/2019/12/19/using-newtonsoft-json-in-net-core-3-projects/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...