读取JSON数据会引发运行时异常

时间:2016-06-17 12:52:54

标签: c# json.net

根据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,效果很好。

我错过了什么吗?

3 个答案:

答案 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);