如果更改字段.NET的名称,则DataMemeber属性存在问题

时间:2019-02-01 10:58:32

标签: .net json asp.net-web-api datacontractserializer

我使用restsharp(Web API,.NET Web应用程序项目)与控制器将此称为https://jsonplaceholder.typicode.com/albums。 这是我的课程,我使用Datacontracts和DataMemebers。

 let A = {
   datetime: '2019-02-01 15:30:43' 
 }

使用邮递员,结果是:

[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; }

    }

为什么会这样?该属性必须识别出所有字段名称

2 个答案:

答案 0 :(得分:0)

这是因为你改变了属性名称。数据memeber名称仍保持不变。 试试这个:

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

    DataMember(Name = "id")]
    Public int id{ get; set;}

    DataMember(Name = "name")]
    Public string name{ get; set;}
}

答案 1 :(得分:0)

你有没有试着用JsonProperty属性的工作?这就是我使用JSON.NET库(Newtonsoft)序列化/反序列化JSON的方式

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

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