2017-01-05 13 views
0

これにはたくさんのQがありますが、私はJSON.Netなどがなくても解決策が必要です。Asp.Net MVCで缶詰を使用する必要があります。Dynamic/ExpandoとJSON

どのように私は動的プロパティでPOCOをシリアル化できますか?すべての静的プロパティも取得できますか?私が見つけたのはダイナミックのみ、または簡単なスタティックタイプでした。

public class ReturnThisClassAsJSON { 
    public int Id {get; set; } 
    public string Name { get; set; } 
    public ContainedClass ContainedContents { get; set; } 
} 

public class ContainedClass { 
    public int Order { get; set; } 
    public string Label { get; set; } 
    public dynamic DynamicInfo { get; set; } 
    public List<dynamic> DynamicList { get; set } 
} 
+0

サンプルデータと予想されるシリアライズされたJSON出力を提供できますか? – wdosanjos

+1

あなたは何を意味するのですか?私が見つけたのはダイナミックなものか、簡単なスタティックなものでしたか?試しても動かなかったコードがありますか?あなたはそれを共有できますか? – wdosanjos

+0

http://stackoverflow.com/questions/5156664/how-to-flatten-an-expandoobject-returned-via-jsonresult-in-asp-net-mvcを参照してください。動的型と静的型の両方を持つクラスが私がしようとしているものです。静的型のオブジェクト階層は簡単です。ダイナミクスをPOCOに投げ込み、それでも機能させる。 – Trober

答えて

0

私自身の答え:

を私は、静的な型でContainedClassからのDynamicInfoと、動的リストからダイナミックに置き換えます。

動的では、私は2つの選択のうちの1つを持っていました。上記の質問5156664を使用して、独自のシリアル化呼び出しでダイナミックを文字列にシリアル化します(クラスの残りの部分も残してしまいました。または、このエラーが発生します。

"'System.Reflection。RuntimeModule'型のオブジェクトをシリアル化しているときに循環参照が検出されました。

ContainedClassで1回のシリアル化呼び出しを試行する場合。

public class ColumnValue 
{ 
    public string Name { get; set; } 
    public string Value { get; set; } 
} 

public class DynamicRow 
{ 
    public List<ColumnValue> ColumnValue { get; set; } 
} 

と、これにContainedClassを変更します:

だから、私は静的型付けされたクラスにダイナミクスを転送

public class ContainedClass 
{ 
    public List<ColumnValue> DynamicInfo { get; set; } 
    public List<DynamicRow> Data { get; set; } 
} 

をそして、それはすぐにASPを使用シリアライズ.Net MVC:

return Json(ReturnThisClassAsJSON, JsonRequestBehaviour.AllowGet);