Проблема с атрибутом DataMemeber, если изменить имя поля .NET - PullRequest
0 голосов
/ 01 февраля 2019

Я называю это https://jsonplaceholder.typicode.com/albums с моим контроллером, используя restsharp (веб-API, проект веб-приложения .NET).Это мой класс, и я использую 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
}

Почему это происходит?С этим атрибутом должны распознаваться все названия полей

Ответы [ 2 ]

0 голосов
/ 02 февраля 2019

Вы пробовали работать с атрибутами JsonProperty?Вот как я сериализую / десериализую JSON с использованием библиотеки JSON.NET (Newtonsoft)

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

Надеюсь, эта ссылка также поможет: JsonPropertyAttribute Name Documentation JSON.NET

0 голосов
/ 01 февраля 2019

Это потому, что вы изменили имя свойства.Имена членов данных по-прежнему остаются прежними.Попробуйте это:

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