2016-08-07 5 views
0

Я ищу, чтобы взять динамический объект из стороннего API & конвертировать в мой объект C# с минимальным кодом. Как и то, что делает Dapper с результатами SQL-запроса для объекта C#. Есть ли библиотека, которая будет делать это? Я могу сделать это вручную, как показано ниже, но мне кажется, что каждый код нужно писать каждый раз, когда я хочу извлечь из этого API.преобразовать динамический объект в объект C#

public IEnumerable<Requirement> Get() 
    { 
     dynamic requirementsSelect; 
     requirementsSelect = _RequirementsRepository.GetRequirements(); 
     IList<Requirement> Requirements = new List<Requirement>(); 
     foreach (var req in requirementsSelect) 
     { 
      Requirement requirement = new Requirement(); 
      requirement.Text = req.Text; 
      requirement.Number = req.Number; 
      Requirements.Add(requirement); 
      foreach (var node in req.Phrases) 
      { 
       Requirement reqNode = new Requirement(); 
       reqNode.Text = node.Text; 
       reqNode.Number = node.Number; 
       requirement.Nodes.Add(reqNode); 
     } 
     return Requirements; 
    } 

Благодаря

+0

Вы попробовали JSON? –

+0

@MokhtarAshour Я думал о Newtonsoft.Json, но я хочу, чтобы это был объект C#, а не json. спасибо – shw

+1

@gypsyCoder конечно, но я хотел отправить JSON из стороннего API и десериализовать его на объект C#, который у вас есть в коде –

ответ

1

я в конечном итоге возвращение третьей стороны как JSON следующим образом. В моем конкретном случае JSON не показывал свойства. Я решил, изменив динамический объект на IEnumerable, и тогда я смог указать, какие свойства я хотел бы получить, используя .Select.

IEnumerable<dynamic> requirements = _RequirementsRepository.GetRequirements(); 
     return JsonConvert.SerializeObject(new 
     { 
      Requirement = requirements.Select(x => x.Text), 
      Number = requirements.Select(x => x.Number), 
     }); 

Спасибо!

Смежные вопросы