Как заполнить существующий экземпляр объекта значениями от JSON - PullRequest
0 голосов
/ 21 марта 2020

Я пытаюсь скопировать пример по этой ссылке. https://www.newtonsoft.com/json/help/html/PopulateObject.htm

    [DataContract]
    public class Account
    {
        [DataMember]
        public int Id { get; set; }
        [DataMember(Name = "title")]
        public string Name { get; set; }
        [DataMember]
        public int MainContactId { get; set; }
        [DataMember]
        public DateTime DateCreated { get; set; }
        [DataMember]
        public DateTime DateUpdated { get; set; }

    }

        Account account = new Account
        {
             Id = 0,
             Name = "xxx",
             MainContactId = 0,
             DateCreated = new DateTime(),
             DateUpdated = new DateTime(),

        };

        string json = @"{ 
           'Name': 'Help',
           'MainContactId': 0,
        }";

       Newtonsoft.Json.JsonConvert.PopulateObject(json, account);
       Console.WriteLine(account.Name);

Имя не меняется. Чего мне не хватает в примере.

1 Ответ

1 голос
/ 22 марта 2020

В вашем классе Account вы настроили свойство Name с [DataMember(Name = "title")]. Это заставит сериализатор попытаться сопоставить его со свойством title в JSON. Однако ваш JSON не содержит свойства title; он содержит Name свойство.

Вот несколько возможных решений:

  1. Удалите Name = "title" из атрибута [DataMember] в свойстве Name:

    [DataMember]
    public string Name { get; set; }
    

    Fiddle: https://dotnetfiddle.net/WDTJrU

    ИЛИ

  2. Измените JSON, чтобы оно имело title вместо Name:

    string json = @"{ 
       'title': 'Help',
       'MainContactId': 0,
    }";
    

    Скрипка: https://dotnetfiddle.net/WTnOIS

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