我正在使用ASP.NET Core 3.1为工作项创建触发器创建Azure DevOps webhook终结点。 DevOps产生的有效负载为。字段数组中某些属性名称中的字符]
"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; }
任何人都知道如何处理包含小数点的属性名称吗?
您可以使用
[JsonPropertyName("System.AreaPath")]
而不是
[JsonProperty("System.AreaPath")]
来自System.Text.Json,如@Hintee所述,默认情况下在.net core 3中使用
只要您使用Newtonsoft Json处理JSON序列化/反序列化,JsonProperty属性就可以正常工作。但是默认情况下,AspNet Core 3+使用System.Text.Json。
这里是将其配置为使用Newtonsoft的文章:
https://dotnetcoretutorials.com/2019/12/19/using-newtonsoft-json-in-net-core-3-projects/