我需要 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 个允许我分别执行上述操作。
我研究过在全局范围内设置这些设置,但运气不佳。
有人知道使用这两种设置进行序列化的方法吗?
最佳答案
您在 JsonSerializerSettings
中使用 Converters
属性指定您的 JavaScriptDateTimeConverter
:
var json = JsonConvert.SerializeObject(this.Data, new JsonSerializerSettings()
{
Converters = new List<JsonConverter> { new JavaScriptDateTimeConverter() },
ReferenceLoopHandling = ReferenceLoopHandling.Serialize
});
实际上,采用 JsonConverter
数组的重载在内部创建了一个 JsonSerializerSettings
并设置了它的 Converters 属性。
关于c# - Newtonsoft Json.NET ReferenceLoopHandling 和 JavascriptDateTimeConverter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15315762/