2016-09-12 1 views
0

У меня есть метод в моем классе, который использует API для получения данных. Затем я использую JsonConvert.DeserializeObject для создания другого экземпляра того же класса, а затем копирую значения в объект, в котором я находится, и именно там, где мне нужны значения в первую очередь. Хотя это работает очень хорошо, кажется, что должен быть лучший способ сделать это. (Я знаю, что это может быть реорганизовано для SRP. Я просто пытаюсь найти более эффективный способ получить значения в членах.)Deserialize в один и тот же объект с помощью JsonConvert (C#)

Может ли кто-нибудь показать мне лучший способ?

  public class MyModel 
     { 
      public string Description { get; set; } 
      public string Last_Name { get; set; } 
      public string Nickname { get; set; } 


      public void Load() 
      { 
       var results = {code that gets stuff} 
       MyModel item = JsonConvert.DeserializeObject<MyModel>(results.ToString()); 

       this.Description = item.Description; 
       this.Last_Name = item.Last_Name; 
       this.Nickname = item.Nickname; 
      } 
      . 
      . 
      . 

     } 
+0

Что такое оригинал JSON ли? модель десериализации? модель, которую вы действительно хотите достичь (модель копирует значения)? код, который делает это? Я думаю, что у вас достаточно представителей, чтобы задать хороший вопрос ..... –

+0

Мне нужны данные, которые я получаю из вызова api, чтобы приземлиться в членах того же объекта, который сделал звонок. Этот код делает это, но я смотрю, есть ли более эффективный способ сделать это. – Kenny

+0

@Nikita Читайте код и метки. OP уже использует его –

ответ

1

вы хотите, чтобы это

class A 
     { 
      public int Id { get; set; } 

      public string Value { get; set; } 

      public void Load() 
      { 
       var json = @"{Id:1,Value:""Value""}"; 
       JsonConvert.PopulateObject(json, this); 
      } 
     } 
+0

Возможно, это так. Я не знаком с методом PopulateObject в JsonConvert. Я буду искать его завтра, когда вернусь к работе. Спасибо. – Kenny

+1

Но я бы не рекомендовал это делать так. Объект POCO не должен иметь в себе логики только свойств. Вы должны взглянуть на [шаблон хранилища] (http://www.codeproject.com/Articles/526874/Repositorypluspattern-cplusdoneplusright) –

+0

Это было именно то, что я искал! Я только что протестировал его, и это сработало. Я обязательно рассмотрю шаблон репозитория. Я хочу правильно это сделать, и я получаю понемногу. Я ценю вашу помощь Филип. – Kenny