2016-09-09 4 views
2

派生リストのリストをJSON.NETでシリアライズする方法が見つからず、それが可能かどうか疑問に思っています。いくつかのコードで状況を説明しましょう。私は、私のコードでは、派生リストのリストをシリアライズ

public class GroupeActes : List<Acte> 
{ 
    public string NomGroupe { get; set; } 

    public GroupeActes(string nom, List<Acte> liste) 
    { 
     NomGroupe = nom; 

     foreach (var acte in liste) 
     { 
      this.Add(acte); 
     } 
    } 
} 

その後:

私は(一般的なもので最初に試してみました)特定のオブジェクトのリストから派生した新しいクラスを作成し、文字列プロパティNomGroupeを追加しましたこのクラス(List<GroupeActes> listOfGroupeActes)のリストを宣言しました。私はそれをデータで埋めます。私はとTypeNameHandling.AllパラメータなしとJson.netプロパティのいくつかの組み合わせであってものDataContract/DataMemberプロパティを試してみた

 JsonSerializer serializer = new JsonSerializer(); 
     serializer.TypeNameHandling = TypeNameHandling.All; 
     using (StreamWriter sw = new StreamWriter(@"listOfGroupeActes.json")) 
     using (JsonWriter writer = new JsonTextWriter(sw)) 
     { 
      serializer.Serialize(writer, listOfGroupeActes); 
     } 

:直列化のために、私はこのコードを使用します。

これまでのところ、自分のjsonファイルには、NomGroupeプロパティを含まないネストされた各データList<Acte>のいずれか、またはその逆のいずれかを取得することしかできませんでした。しかし、私はそれを望んでいます。その後、

つの質問:

  • はそれも可能ですか?
  • はいの場合、どうすればいいですか?

ありがとうございました!

+0

JsonConvert.SerializeObject()を使用できませんか? – gmn

+0

いいえ、問題は悲しいことに同じです。 'NomGroupe'プロパティは無視されます。 – LaPointe

+0

[JSONはクラスを継承するプロパティを直列化する](https://stackoverflow.com/questions/35439335)のように見えるか、または[から派生したクラスのメンバーをjson.netでシリアル化するにはどうすればよいですか? ](https://stackoverflow.com/questions/21265629)、いずれも回避策があります。 – dbc

答えて

1

You don't want to inherit from List<T>を使用してみてください。

代わりに、リストのプロパティを作成します。

public class GroupeActes 
{ 
    public List<Acte> Actes { get; set; } 

    public string NomGroupe { get; set; } 

    public GroupeActes(string nom, List<Acte> liste) 
    { 
     NomGroupe = nom; 

     Actes.AddRange(acte);   
    } 
} 

リスト(や他のコレクション型)をシリアライズしながら、特別な治療を受けます。コレクションタイプのパブリックプロパティ(CapacityCountなど)は出力には含まれないため、継承によって追加したプロパティはシリアル化されません。だから、シリアライザもあなたの列挙のプロパティを見ていないだろう

if o is IEnumerable 
    foreach object s in o 
     serialize o 

コレクションは、次のようにシリアライズされます。

+0

悲しいことに、Xamarin.Formsプロジェクトのリストビューにグループ化するためのリストを継承する必要があります。[link](https://developer.xamarin.com/guides/xamarin-forms/user-interface/listview/customizing-list -外観/)。 JSON.NETでこのようなオブジェクトをシリアライズすることはまったく不可能だと言っていますか? – LaPointe

+0

シリアライゼーションはリストに表示することと何か関係がありますか?そうでない場合は、上記のクラスをシリアライズに使用し、それを質問のうちの1つにマッピングして表示します。 – CodeCaster

+0

私はシリアル化を使用してデータを保存するだけです。つまり、JSON.NETがこれを行うことができない場合は、これが私が使用する解決策です。ありがとう、私はあなたの答えを受け入れるだろう。 – LaPointe

0

はNewtonsoft Json.NET

string itemToSend = JsonConvert.SerializeObject(dataModel); 
+0

いいえ、問題は悲しいことに同じです。 'NomGroupe'プロパティは無視されます。 – LaPointe

関連する問題