2016-08-07 6 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確かに、サードパーティ製のAPIからJSONを送信し、コードにある#オブジェクトにデシリアライズすることを意図していました。 –

答えて

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), 
     }); 

ありがとうございます!

関連する問題