2013-03-09 73 views
3

我需要Json.NET序列化使用JavaScriptDateTimeConverter和ReferenceLoopHandling.Ignore。就我所知,JsonConvert.SerializeObject上的簽名都不允許設置這兩個設置。Newtonsoft Json.NET ReferenceLoopHandling和JavascriptDateTimeConverter

我可以這樣做:

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

或者我可以這樣做:

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

但我不能兩者都做。我爲SerializeObject獲取的簽名如下。第六和第五個分別允許我做到以上幾點。

SerializeObject signatures

我已經研究過全球範圍內設置這些設置,但我還沒有多少運氣。

任何人都知道使用這兩個設置序列化的方法?

回答

4

您指定JavaScriptDateTimeConverterJsonSerializerSettings「與Converters屬性裏面:

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

其實這需要內部的JsonConverter陣列過載創建一個JsonSerializerSettings,並將其轉換屬性。

+0

有點混亂,在兩個地方。感謝你的回答! – jdehlin 2013-03-09 21:09:34

相關問題