如果我使用 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 的接口(interface),然后调用 ToString 方法。鉴于我必须支持该接口(interface),我需要传递一个 JObject,而不是一个字符串。 Json.Net 中还有另一个可用的 API:
public static JObject FromObject(
Object o,
JsonSerializer jsonSerializer
)
是否有默认的 JsonSerializer,我可以在此调用中使用但添加到我的自定义契约(Contract)解析器中?
最佳答案
你可以使用
var serializerSettings = new JsonSerializerSettings { ContractResolver = MyContractResolver.Instance };
var serializer = JsonSerializer.CreateDefault(serializerSettings);
var serializedString = JObject.FromObject(myObject, serializer).ToString();
JsonSerializer.CreateDefault
将使用默认设置 (JsonConvert.DefaultSettings
) 创建序列化器,然后将您提供的设置合并到它们中。
如果您不需要这些默认设置,请使用
JsonSerializer.Create(serializerSettings)
这只会使用您提供的设置创建序列化程序(不会与默认值合并)。
关于c# - 使用 Json.Net 的 JObject.FromObject 方法进行序列化时,我可以使用自定义 ContractResolver 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50063803/