我很难迭代一个简单的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',因为它具有条件属性
答案 0 :(得分:3)
它是动态的,所以我们将它转换为一个对象,然后调用ToString()方法。例如:
Debug.WriteLine(((object)a.First["synonym"]).ToString());