gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 22:45:39 24 4
gpt4 key购买 nike

如果我使用 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com