首页 > 解决方案 > 如果更改字段 .NET 的名称,DataMemeber 属性会出现问题

问题描述

我用我的控制器使用restsharp(一个web api,.NET web应用程序项目)调用这个https://jsonplaceholder.typicode.com/albums 。这是我的课,我使用 Datacontracts 和 DataMemebers。

[DataContract]
public class Album
{
    [DataMember(Name = "userId")]
    public int UserId { get; set; }

    [DataMember(Name = "id")]
    public int Id { get; set; }

    [DataMember(Name = "title")]
    public string Title { get; set; }

}

使用邮递员的结果是:

 {
    "userId": 1,
    "id": 1,
    "title": "quidem molestiae enim"
    }

我设置了正确的参考,它工作正常。

但是,例如,当我用其他名称更改字段名称时

[DataContract]
    public class Album
    {
        [DataMember(Name = "userId")]
        public int myproject { get; set; }

        [DataMember(Name = "id")]
        public int code { get; set; }

        [DataMember(Name = "title")]
        public string name { get; set; }

    }

并使用邮递员,结果是

{
    "userId": 0,
    "id": 0,
    "title": null
}

为什么会这样?使用此属性必须识别所有字段名称

标签: .netjsonasp.net-web-apidatacontractserializer

解决方案


您是否尝试过使用 JsonProperty 属性?这就是我使用 JSON.NET 库 (Newtonsoft) 序列化/反序列化 JSON 的方式

[JsonProperty("SomeJsonPropertyName")]
 public string YourNewPropertyName{ get; set; }

希望这个链接也有帮助:JsonPropertyAttribute Name Documentation JSON.NET


推荐阅读