簡體   English   中英

Newtonsoft Json.NET ReferenceLoopHandling和JavascriptDateTimeConverter

[英]Newtonsoft Json.NET ReferenceLoopHandling and JavascriptDateTimeConverter

我需要Json.NET使用JavaScriptDateTimeConverter和ReferenceLoopHandling.Ignore進行序列化。 據我所知,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簽名

我已經考慮過在全球范圍內設置這些設置,但我沒有太多運氣。

有人知道使用這兩種設置序列化的方法嗎?

您可以JavaScriptDateTimeConverter Converters屬性在JsonSerializerSettings '中指定JavaScriptDateTimeConverter

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

實際上, JsonConverter數組內部的重載會創建一個JsonSerializerSettings並設置其Converters屬性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM