3

JavaScriptDateTimeConverter と ReferenceLoopHandling.Ignore の両方を使用してシリアル化するには、Json.NET が必要です。私が知る限り、 JsonConvert.SerializeObject の署名のいずれも、これらの設定の両方を設定することを許可していません。

できます:

var json = JsonConvert.SerializeObject(this.Data, new JavaScriptDateTimeConverter());

または私はすることができます:

var json = JsonConvert.SerializeObject(this.Data, new JsonSerializerSettings()
            {
                ReferenceLoopHandling = ReferenceLoopHandling.Serialize
            });

しかし、私は両方を行うことはできません。SerializeObject に対して取得した署名は次のとおりです。6番目と5番目のものでは、それぞれ上記を行うことができます。

SerializeObject シグネチャ

これらの設定をグローバルに設定することを検討しましたが、うまくいきませんでした。

これらの設定の両方を使用してシリアル化する方法を知っている人はいますか?

4

1 に答える 1

4

プロパティで' のJavaScriptDateTimeConverter内側を指定します。JsonSerializerSettingsConverters

var json = JsonConvert.SerializeObject(this.Data, new JsonSerializerSettings()
{
    Converters = new List<JsonConverter> { new JavaScriptDateTimeConverter() },
    ReferenceLoopHandling = ReferenceLoopHandling.Serialize
});

実際には、JsonConverter配列を内部的に受け取るオーバーロードが を作成し、JsonSerializerSettingsその Converters プロパティを設定します。

于 2013-03-09T20:55:10.697 に答える