JsonSerializerSettings线程安全吗?

EBa*_*arr 8 c# thread-safety json.net

如果我在我的项目中使用相同的设置,我可以实例化我的一个静态副本JsonSerializerSettings并在整个过程中使用它吗?

例如 :

private static readonly JsonSerializerSettings settings = new JsonSerializerSettings {
    Formatting              = Formatting.Indented,
    TypeNameHandling        = TypeNameHandling.None,
    DateFormatHandling      = DateFormatHandling.IsoDateFormat,
    TypeNameAssemblyFormat  = FormatterAssemblyStyle.Simple
};

public static string ToJSONString(this Object source) {
    return JsonConvert.SerializeObject(source, settings);
}   
Run Code Online (Sandbox Code Playgroud)

那么,我是不是很危险

Jos*_*nox 5

以下对话发生在 twitter 上,@JamesNK 是 JSON.net 的作者:https ://twitter.com/jonathan_oliver/status/332227095616966656

来自:乔纳森·奥利弗?@jonathan_oliver 致:@JamesNK

静态 JsonConvert.DeserializeObject 方法线程安全吗?使用 5.0.4 和 5.0.5 遇到一些奇怪的错误。

回复:

詹姆斯牛顿金??@JamesNK 2013 年 5 月 8 日@jonathan_oliver

是的。如果不是,请在 GitHub 上创建问题

回复:

乔纳森·奥利弗 ?@jonathan_oliver 2013 年 5 月 9 日

@JamesNK 事实证明,附加到我与 JsonConvert 一起使用的静态 JsonSerializerSettings 对象的 ContractResolver 不是线程安全的。

我没有看到曾经提交过错误,但这确实暗示它们的设计应该是线程安全的,但是可能有实现特定的方法来破坏它,或者它可能不是一个整体。