首页 > 解决方案 > 在 C# 中,将 POCO 转换为 JObject 时是否可以应用 IContractResolver?

问题描述

因为我们正处于迁移过程中,所以我们不能将某些JsonProperty名称硬编码到 DTO 上的属性中,而是需要将 anIContractResolver应用于实例,JsonSerializerSettings以便正确序列化 POCO。

但是,因为我想重用现有库中的代码,所以我宁愿将我的 POCO 转换为 JObject 而不是 String。

目前我正在这样做:

            JsonSerializerSettings settings = new()
            {
                ContractResolver = _salesforceContractResolver
            };
            string outboundContractJson = JsonConvert.SerializeObject(outboundContract, settings);
            JObject jObject = JObject.Parse(outboundContractJson);

这行得通,但效率有点低。

我试过了:

            JsonSerializerSettings settings = new()
            {
                ContractResolver = _salesforceContractResolver
            };
            JObject jObject = JObject.Parse(outboundContractJson, settings);

但是,毫不奇怪,这不会编译。

我看到它JObject提供了以下签名:

public static JObject FromObject(object o, JsonSerializer jsonSerializer);

有没有一种简单的方法可以将我的设置“转换”为序列化程序的实例?

还是有其他方法我可以/应该这样做?

标签: c#jsonoptimizationserializationsettings

解决方案


推荐阅读