我需要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个允许我分别做以上。
我已经考虑过全局设置这些设置,但我没有太多运气。
任何人都知道使用这两种设置进行序列化的方法吗?
答案 0 :(得分:4)
您使用JavaScriptDateTimeConverter
属性在JsonSerializerSettings
'内指定Converters
:
var json = JsonConvert.SerializeObject(this.Data, new JsonSerializerSettings()
{
Converters = new List<JsonConverter> { new JavaScriptDateTimeConverter() },
ReferenceLoopHandling = ReferenceLoopHandling.Serialize
});
实际上,JsonConverter
数组内部的重载会创建一个JsonSerializerSettings
并设置其转换器属性。