2017-05-14 24 views
0

私は次の問題があります。Jsonは辞書内で辞書をシリアライズ

追加の辞書を持つクラスを含むクラスをシリアル化しようとしています。

構造は、次のように簡略化されます。

public class GroupVM 
{ 
    public GroupVM() 
    { 
     this.Clusters = new Dictionary<int, ClusterVM>(); 
    } 

    public Dictionary<int,ClusterVM> Clusters { get; set; } 
} 

public class ClusterVM 
{ 
    public ClusterVM() 
    { 
     this.Attributes = new Dictionary<Guid, AttributeVM>(); 
    } 
    Dictionary<Guid,AttributeVM> Attributes { get; set; } 

    public void AddAttribute(Guid guid, string name) 
    { 
     AttributeVM attrVM = new AttributeVM(); 
     attrVM.Name = name; 
     attrVM.Guid = guid; 
     this.Attributes.Add(guid,attrVM); 
    } 
} 

public class AttributeVM 
{ 
    public Guid Guid { get; set; } 
    public string Name { get; set; } 
} 

は、私はAPIでそれを使用し、GroupVMのシリアル化されたバージョンを返すようにしようとしています。何らかの理由で、私はAttributes Dictionary(ClusterVMクラス内)に何も得ていません。

リストに変更すると正常に動作します。

Code Sample

答えて

1

は、サンプルコードによるとAttributesプロパティは、シリアライザは、その存在を知らなかったので、それがシリアル化された得ることができませんでした

Dictionary<Guid,AttributeVM> Attributes { get; set; } 

パブリックではありませんでした。プロパティをパブリックにして、シリアル化する必要があります。

public class ClusterVM { 
    public ClusterVM() { 
     this.Attributes = new Dictionary<Guid, AttributeVM>(); 
    } 

    public IDictionary<Guid,AttributeVM> Attributes { get; set; } 

    public void AddAttribute(Guid guid, string name) { 
     AttributeVM attrVM = new AttributeVM(); 
     attrVM.Name = name; 
     attrVM.Guid = guid; 
     this.Attributes.Add(guid,attrVM); 
    } 
}