【发布时间】:2012-03-01 22:20:27
【问题描述】:
我正在尝试访问 Foursquare 响应中第一级中的所有类别:-
{
"meta": {
"code": 200
},
"response": {
"categories": [{
"id": "4d4b7104d754a06370d81259",
"name": "Arts & Entertainment",
"pluralName": "Arts & Entertainment",
"shortName": "Arts & Entertainment",
"icon": {
"prefix": "https:\/\/foursquare.com\/img\/categories\/arts_entertainment\/default_",
"sizes": [32, 44, 64, 88, 256],
"name": ".png"
},
"categories": [{
"id": "4bf58dd8d48988d1e1931735"
使用 JSON.NET:-
JObject o = JObject.Parse(FoursquareObject.GetCategories());
IList<string> categories = o.SelectToken("categories[0]").Select(s => (string)s).ToList();
FoursquareObject.GetCategories() 以字符串形式返回响应。我也试过:-
JArray categories = (JArray)o["categories"];
var categories = (string) o["response[0].categories"];
...以及许多变体,只是为了查看变量中的响应并始终得到“对象引用”或“不能为 {null}”错误。我知道我已经很接近了,但是对于我的生活来说,我无法弄清楚如何获得响应的“类别”部分......
谁能指出我正确的方向?
感谢您的帮助。 ;)
更新:
感谢 L.B 和 Meklarian 的回答,我添加了以下代码(及其变体):-
dynamic four = JsonConvert.DeserializeObject(FoursquareObject.GetCategories());
foreach (var cat in four)
{
context.Response.Write(cat.response.categories.id);
}
但无论我在Write() 中尝试什么,我总是得到:-
'Newtonsoft.Json.Linq.JProperty' 不包含对 “回应”
我尝试了很多组合,但运气不好。我检查了 JSON 文件的输出,我得到纯 JSON 响应作为字符串。请注意,类别可以存在于类别中,因此 JSON 看起来似乎损坏了。我向你保证不是。我完全被卡住了!
【问题讨论】:
-
@L.B 这似乎只是门票! +1
标签: c# linq json.net foursquare