Cela fait partie du JSON que je reçois de foursquare.
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"
}
}
}]
}]
}
Je dois obtenir le dernier conseil text , le utilisateur qui l’a écrit et la date quand il l’a écrit/posté.
Utilisateur: Damir P.
Date: 1314115358
Texte: Centre de conditionnement physique de Najjači
J'ai essayé avec JQuery et cela fonctionne pour extraire une valeur non-array:
$.getJSON(url, function(data){
var text= data.response.venue.tips.groups.items.text;
alert(text);
});
Mais cela ne fonctionne pas avec les tableaux.
Résultat : Uncaught TypeError: Impossible de lire la propriété 'texte' de non définie.
J'ai aussi essayé avec $ .each , mais sans effet.
$.getJSON(url, function(data){
$.each(data.response.venue.tips.groups.items.text, function (index, value) {
console.log(value);
});
});
Qu'est-ce que je fais mal ?
Vous devez itérer les groupes et les éléments. $ .each () prend une collection comme premier paramètre et data.response.venue.tips.groups.items.text
tente de pointer vers une chaîne. groups
et items
sont des tableaux.
Version verbeuse:
$.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'
});
});
});
Ou plus simplement:
$.getJSON(url, function (data) {
$.each(data.response.venue.tips.groups, function (index, value) {
$.each(this.items, function () {
console.log(this.text);
});
});
});
Dans le JSON que vous avez spécifié, le last serait:
$.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);
});
Cela vous donnerait:
Utilisateur: Damir P.
Date: 1314168377
Texte: ajd da vidimo hocu li znati ponoviti
Vous ne faites pas de boucle sur les objets. Essayez ceci à la place:
$.getJSON(url, function(data){
$.each(data.response.venue.tips.groups.items, function (index, value) {
console.log(this.text);
});
});
Je pense que vous avez besoin de quelque chose comme:
var text= data.response.venue.tips.groups[0].items[1].text;
essaye ça
$.getJSON(url, function(data){
$.each(data.response.venue.tips.groups.items, function (index, value) {
console.log(this.text);
});
});