C# 从某个键迭代json

C# 从某个键迭代json,c#,json,json.net,C#,Json,Json.net,我很难迭代一个简单的JSON。我用Javascript很容易做到这一点,但无法在C#中使用json.net。 这是我的JSON: { "term0":{ "id":"2131sd0", "senses":{ "0":{ "synonyms":{ "0":{ "synonym":"that", "context":""

我很难迭代一个简单的JSON。我用Javascript很容易做到这一点,但无法在C#中使用json.net。 这是我的JSON:

{
   "term0":{
      "id":"2131sd0",
      "senses":{
         "0":{
            "synonyms":{
               "0":{
                  "synonym":"that",
                  "context":""
               },
               "1":{
                  "synonym":"the indicated",
                  "context":""
               },
               "2":{
                  "synonym":"the present",
                  "context":""
               },
               "3":{
                  "synonym":"aforementioned",
                  "context":""
               }
            }
         }
      }
   },
   "term1":{
      "id":"2131sd1",
      "senses":{
         "0":{
            "synonyms":{
               "0":{
                  "synonym":"the one",
                  "context":""
               },
               "1":{
                  "synonym":"this one",
                  "context":""
               },
               "2":{
                  "synonym":"the one in question",
                  "context":""
               }
            }
         }
      }
   }
}
这是我的c#:

这是崩溃。我错过了什么

多谢各位

错误:

类型的第一次机会例外 中出现“Microsoft.CSharp.RuntimeBinder.RuntimeBinderException” Microsoft.CSharp.dll类型的第一次意外异常 中出现“Microsoft.CSharp.RuntimeBinder.RuntimeBinderException” System.Core.dll类型的未处理异常 中出现“Microsoft.CSharp.RuntimeBinder.RuntimeBinderException” System.Core.dll 其他信息:无法动态调用 方法“WriteLine”,因为它具有条件属性


它是动态的,所以我们将其强制转换为一个对象,然后调用ToString()方法。例如:

Debug.WriteLine(((object)a.First["synonym"]).ToString());

哪个崩溃了
用什么崩溃了?您收到了什么错误消息?把它放到你的问题中。当我尝试它时,我得到一个
无效操作异常
,消息是:
无法访问Newtonsoft.Json.Linq.JProperty上的子值。
@MattBurland我也得到了它。您必须先调用
a.[“同义词”]
,然后您将收到他描述的异常。@康威尔我怀疑这是一个人为的例子,但只是为了让您知道-您可以在这里使用
JToken
而不是
dynamic
,这将缓解您的情况。@ByteBlast谢谢。为什么这里首先需要它?我得到一个“无法访问Newtonsoft.Json.Linq.JProperty上的子值。”error@ByteBlast指出,它应该是
Debug.WriteLine(((object)a.First[“synonym”]).ToString()@MattBurland好的,谢谢。我想我应该测试一下。
Debug.WriteLine(((object)a.First["synonym"]).ToString());