c# – Nancy FX将模型绑定中的字典键大写
发布时间:2020-12-15 22:17:49 所属栏目:百科 来源:网络整理
导读:我正在尝试将 JSON发布到NancyFx. JSON如下: { "prop1": 1,"entries":{ "Entry1": 1,"entry2": 2 }} 在服务器端,我创建了一个相应的模型: public class Model{ public int Prop1 { get; set; } public IDictionarystring,object Entries { get; set; }} JS
我正在尝试将
JSON发布到NancyFx.
JSON如下:
{ "prop1": 1,"entries":{ "Entry1": 1,"entry2": 2 } } 在服务器端,我创建了一个相应的模型: public class Model { public int Prop1 { get; set; } public IDictionary<string,object> Entries { get; set; } } JSON中的entries字段具有动态结构,并且因为IDictionary< string,object>用于模型中. 然后我绑定模型: this.Bind<Model>(); 模型创建成功,但问题是在条目字典中,两个键都是大写的.对我来说情况非常重要,我希望第二个键是entry2,而不是Entry2. 我也尝试使用JavaScriptConverter和JavaScriptPrimitiveConverter,但在Deserialize方法中我得到了大写数据. 任何想法哦如何解决这个问题? 解决方法
对我来说,这是通过配置JavascriptSerializer来保留套管来解决的.
不幸的是我无法找到一个干净的方法来做到这一点,但这是我现在正在使用的黑客. public class Model { public IDictionary<string,object> Entries { get; set; } } public class CustomModelBinder : IModelBinder { public bool CanBind(Type modelType) { return modelType == typeof(Model); } public object Bind(NancyContext context,Type modelType,object instance,BindingConfig configuration,params string[] blackList) { using (var sr = new StreamReader(context.Request.Body)) { return (new JavaScriptSerializer() { RetainCasing = true }).Deserialize<Model>(sr.ReadToEnd()); } } } Nancy将在运行时获取此绑定器,无需显式注册任何内容. 此解决方案并不理想,因为它忽略了一些Nancy功能,如黑名单和可能的其他绑定配置设置. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |