根据NewtonSoft's documentation,此代码:
var dropDownVal = $("#dropdown").val();
$(#dropdown).change(function() {
$.ajax({
url : yourControllerUrl/MyAction,
type: "POST",
data : {
dropDown : dropDownVal
}
});
});
应该可行,但是当我尝试时,我会得到string props = "{\"lot\":\"TEST\",\"mhd\":\"2016-06-17\"}";
dynamic json = JsonConvert.DeserializeObject(props);
string s = json.mhd;
。我引用了RunTimeBinderException
并且编译工作(这是一个运行时错误)。我正在使用NewtonSoft版本7编译.NET 4.0。
我尝试访问Micrsoft.CSharp
,效果很好。
我错过了什么吗?
答案 0 :(得分:2)
json
对象是一个JObject,所以要获得你需要的值:
string s = (string)json["mhd"];
答案 1 :(得分:1)
我在Newtonsoft.Json 3.5.8版本中尝试此案例,我收到此错误。 当我将Newtonsoft.Json包版本升级到4.5.1时,它可以工作。 我认为它有旧版本的bug。
答案 2 :(得分:0)
@Candide指出了您的示例出了什么问题,但如果您仍想使用json.mhd
语法并使用真正的动态对象,则可以执行此操作。
尝试使用ExpandoObjectConverter
:
var converter = new ExpandoObjectConverter();
dynamic json = JsonConvert.DeserializeObject<ExpandoObject>(props, converter);