这是我从foursquare获得的JSON的一部分。
JSON格式
tips: { count: 2, groups: [ { type: "others", name: "Tips from others", count: 2, items: [ { id: "4e53cf1e7d8b8e9188e20f00", createdAt: 1314115358, text: "najjači fitness centar u gradu", canonicalUrl: "https://foursquare.com/item/4e53cf1e7d8b8e9188e20f00", likes: { count: 2, groups: [ { type: "others", count: 2, items: [] }], summary: "2 likes" }, like: false, logView: true, todo: { count: 0 }, user: { id: "12855147", firstName: "Damir", lastName: "P.", gender: "male", photo: { prefix: "https://irs1.4sqi.net/img/user/", suffix: "/AYJWDN42LMGGD2QE.jpg" } } }, { id: "4e549e39152098912f227203", createdAt: 1314168377, text: "ajd da vidimo hocu li znati ponoviti", canonicalUrl: "https://foursquare.com/item/4e549e39152098912f227203", likes: { count: 0, groups: [] }, like: false, logView: true, todo: { count: 0 }, user: { id: "12855147", firstName: "Damir", lastName: "P.", gender: "male", photo: { prefix: "https://irs1.4sqi.net/img/user/", suffix: "/AYJWDN42LMGGD2QE.jpg" } } }] }] }
我需要获取最后的提示 文本 ,编写它的 用户 以及他编写/发布它的 日期 。
用户 :达米尔·P。
日期 :1314115358
文字 :健身中心
我尝试使用 JQuery ,这可以获取非数组值:
$.getJSON(url, function(data){ var text= data.response.venue.tips.groups.items.text; alert(text); });
但这不适用于数组。
结果 :未捕获的TypeError:无法读取未定义的属性“文本”。
我也尝试了 $ .each ,但没有效果。
$.getJSON(url, function(data){ $.each(data.response.venue.tips.groups.items.text, function (index, value) { console.log(value); }); });
我究竟做错了什么 ?
您需要迭代组和项目。$ .each()将集合作为第一个参数,并data.response.venue.tips.groups.items.text 尝试 指向一个字符串。这两个groups和items是数组。
data.response.venue.tips.groups.items.text
groups
items
详细版本:
$.getJSON(url, function (data) { // Iterate the groups first. $.each(data.response.venue.tips.groups, function (index, value) { // Get the items var items = this.items; // Here 'this' points to a 'group' in 'groups' // Iterate through items. $.each(items, function () { console.log(this.text); // Here 'this' points to an 'item' in 'items' }); }); });
或更简单地说:
$.getJSON(url, function (data) { $.each(data.response.venue.tips.groups, function (index, value) { $.each(this.items, function () { console.log(this.text); }); }); });
在您指定的JSON中, 最后 一个是:
$.getJSON(url, function (data) { // Get the 'items' from the first group. var items = data.response.venue.tips.groups[0].items; // Find the last index and the last item. var lastIndex = items.length - 1; var lastItem = items[lastIndex]; console.log("User: " + lastItem.user.firstName + " " + lastItem.user.lastName); console.log("Date: " + lastItem.createdAt); console.log("Text: " + lastItem.text); });
这将为您提供:
用户:Damir P. 日期:1314168377 文字:ajd da vidimo hocu li znati ponoviti