C#中将POCO转为JObject时能否应用IContractResolver?
最优实现方案
你可以直接使用JsonSerializer提供的Create静态方法,将JsonSerializerSettings实例直接转换为序列化器实例,配合JObject.FromObject即可一步完成POCO到JObject的转换,完全省去序列化中间字符串再解析的性能损耗。
示例代码如下:
JsonSerializerSettings settings = new() { ContractResolver = _salesforceContractResolver }; // 从现有配置创建序列化器实例 JsonSerializer serializer = JsonSerializer.Create(settings); // 直接转换POCO为JObject,所有配置规则都会生效 JObject jObject = JObject.FromObject(outboundContract, serializer);
补充说明
你之前尝试的JObject.Parse方法仅支持解析JSON字符串输入,不支持直接传入序列化配置,也无法直接处理POCO对象。而上述方案完全保留你原有配置的所有规则,包括ContractResolver、空值处理、日期格式等所有在settings中定义的配置,性能相比原有实现有明显提升。
内容的提问来源于stack exchange,提问作者Brian Kessler
相关产品推荐
相关产品推荐

