【发布时间】:2016-04-05 19:44:48
【问题描述】:
以下是我的json字符串:
string json = @"{
'?xml' : {
'@version' : '1.0',
'@encoding' : 'UTF-8'
},
'DataFeed' : {
'@FeedName' : 'AdminData',
'Issuer' : {
'id' : '95',
'name' : 'Apple',
'symbol' : 'AAPL'
}
}
}";
当我尝试执行以下 LINQ 查询时:
JObject feed = JObject.Parse(json);
var compInfo = feed["DataFeed"]["Issuer"]
.Select(c => c["name"]);
我收到以下错误:
`Cannot access child value on Newtonsoft.Json.Linq.JProperty.`
但是,以下工作正常:
var test1 = feed["DataFeed"]["Issuer"]["name"];
知道为什么我不能在这个 json 字符串上使用 LINQ 吗?
【问题讨论】:
-
您希望使用
Select给您带来什么?您正在迭代JObject的Issuer... -
我应该得到
Apple。我该怎么做? -
Issuer是一个内部JObject。您不能通过JObject使用 Linq,请查看此link 了解更多详情 -
要获得
Apple,只需使用string x = (string) feed["DataFeed"]["Issuer"]["name"]; -
或
var x = (string)feed.SelectToken("DataFeed.Issuer.name"),如果缺少中间对象,则不会抛出空引用异常。
标签: c# linq json.net linq-to-json