我正在尝试将
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()); } } }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。