栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

我应该在哪里插入自定义DefaultContractResolver JSON.NET?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

我应该在哪里插入自定义DefaultContractResolver JSON.NET?

我只是费尽心思弄清楚自己,而我需要一个可以按要求工作的人。您可以使用该方法,只返回相同的媒体格式化程序。我发现将格式化程序设置

GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.ContractResolver
为对于每个请求的需求都不可靠,即使我尝试在该类的单个实例中处理每个请求的需求。但是,您可以尝试在App_Start代码中的某个位置设置ContractResolver实例。

我最终创建了一个自定义

JsonMediaTypeFormatter
,该自定义检查是否为请求配置了ContractResolver,您可以只返回一个和相同的解析器:

public class DynamicJsonMediaTypeFormatter : JsonMediaTypeFormatter{ public override MediaTypeFormatter GetPerRequestFormatterInstance(Type type, System.Net.Http.HttpRequestMessage request, System.Net.Http.Headers.MediaTypeHeaderValue mediaType){// shown is getting the current formatter, but you can return an instance you prefer  var formatter = base.GetPerRequestFormatterInstance(type, request, mediaType) as JsonMediaTypeFormatter;// Here I had more pre to get the resolver based on request, skipped  ((JsonMediaTypeFormatter)formatter).SerializerSettings.ContractResolver = <YourContractResolverInstance>;    return formatter;}}

我想您已经知道了这部分内容,但是您的合同解析器可以覆盖`CreateProperties’并让您自己的逻辑来决定将显示哪些json属性以及它们将使用什么名称(为完整性和其他读者的利益而添加):

public class DynamicContractResolver : DefaultContractResolver{... protected override IList<JsonProperty> CreateProperties(Type type, MemberSerialization memberSerialization){  ...}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/372749.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号