从某个键迭代json

本文关键字:迭代 json | 更新日期: 2023-09-27 18:20:52

我很难迭代一个简单的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#:

JObject rootObject = JObject.Parse(jsonText);
foreach(dynamic a in rootObject.SelectToken("term0")["senses"]["0"]["synonyms"])
{
   Debug.WriteLine(a["synonym"]);
}

它正在崩溃。我错过了什么?

谢谢。

错误:

类型的第一次机会例外中出现"Microsoft.CSharp.RuntimeBinder.RuntimeBinderException"Microsoft.CSharp.dll类型的首次机会异常中出现"Microsoft.CSharp.RuntimeBinder.RuntimeBinderException"System.Core.dll类型为的未处理异常中出现"Microsoft.CSharp.RuntimeBinder.RuntimeBinderException"System.Core.dll附加信息:无法动态调用方法"WriteLine",因为它具有Conditional属性

从某个键迭代json

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

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