C# 从某个键迭代json
我很难迭代一个简单的JSON。我用Javascript很容易做到这一点,但无法在C#中使用json.net。 这是我的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":""
{
"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());