2

から継承されたオブジェクトのシリアル化Dictionary<DateTime, double>では、結果の json 文字列にフィールドとプロパティが含まれません。

注: これは単純化された例です。はい、Dictionary 型から派生させるべきではないことはわかっています。

次のタイプのオブジェクトのシリアル化:

public class Timeserie : Dictionary<DateTime, double>
{
    public string id;

    public Timeserie()
    {

    }

    public Timeserie(string id)
    {
        this.id = id;
    }
}

使用:

var json_settings = new JsonSerializerSettings() { TypeNameHandling = TypeNameHandling.All };
var s = JsonConvert.SerializeObject(timeserie, Formatting.Indented, json_settings);

基本クラス データのみが含まれます。

{
  "01/02/2009 00:00:00": 10.23,
  "01/05/2009 00:00:00": 11.33
}

フィールドidは含まれません。

派生クラスで宣言されたフィールドとプロパティがシリアル化に含まれるように、json.net を使用するにはどうすればよいですか?

4

1 に答える 1

0

json.net のコードを見ると、辞書を処理するための特別な契約があるようです。

したがって、新しいコントラクトを作成するか、辞書をカプセル化します (つまり、辞書をクラスのプロパティにします)。

互いに継承する単純なクラスを作成すると、このコードは派生クラスのすべてのプロパティをシリアル化します

于 2011-11-15T20:21:41.663 に答える