从某个键迭代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属性
它是动态的,所以我们将它强制转换为一个对象,然后调用ToString()方法。例如:
Debug.WriteLine(((object)a.First["synonym"]).ToString());