嘿,我有以下代码:
try {
foreach (var x1 in JObject.Parse(json1)) {
string name = x1.Key;
JToken value = x1.Value;
上述代码没有明显错误。但是,一旦我运行应用程序,它就会出现错误并说:
'Newtonsoft.Json.Linq.JProperty'不包含'Key'的定义
所以这里发生了什么。我的VB.net代码与上面的代码类似:
Try
For Each x1 In JObject.Parse(json1)
Dim name As String = x1.Key
Dim value As JToken = x1.Value
答案 0 :(得分:1)
JProperty
(通过迭代JObject获得JPropertys)继承自JContainer
,继承自JToken
。 JToken
实施IDynamicMetaObjectProvider
。
这使它基本上成为dynamic
对象,允许您在编译时访问它上面的任何内容。这就是你没有得到编译器错误的原因。
在运行时,DLR发现Key
上没有x1
属性并抛出该异常。
如果您想获取属性名称,则应使用Name
属性。
foreach (var x1 in JObject.Parse(json1)) {
string name = x1.Name;
JToken value = x1.Value;