使用Json.Net的JObject.FromObject方法进行序列化时,我可以使用自定义ContractResolver吗?

时间:2018-04-27 13:47:33

标签: c# serialization json.net

如果我使用JsonConvert.SerializeObject序列化对象,指定自定义合约解析器的方法是:

var serializerSettings = new JsonSerializerSettings { ContractResolver = MyContractResolver.Instance };
var serializedString = JsonConvert.SerializeObject( myObject, Formatting.None, serializerSettings )

但是,我们的应用程序的一部分使用此方法序列化:

var serializedString = JObject.FromObject(myObject).ToString();

一个方法调用FromObject来创建一个JObject,然后将它传递给一个需要JObject的接口,然后JObject调用ToString方法。鉴于我必须支持该接口,我需要传递一个JObject,而不是一个字符串。 Json.Net中还有另一个API:

public static JObject FromObject(
    Object o,
    JsonSerializer jsonSerializer
)

我是否可以在此调用中使用默认的JsonSerializer但是添加到我的自定义合约解析程序中?

1 个答案:

答案 0 :(得分:3)

您可以使用

JsonSerializer.CreateDefault

JsonConvert.DefaultSettings将使用默认设置(JsonSerializer.Create(serializerSettings) )创建序列化程序,然后将您提供的设置合并到其中。

如果您不需要这些默认设置,请使用

{{1}}

这将只使用您提供的设置创建序列化程序(不与默认值合并)。