2013-03-05 11 views
7

Dies ist ein Teil des JSON, den ich von foursquare bekomme.JQuery Daten vom JSON Array erhalten

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" 
       } 
      } 
     }] 
    }] 
} 

Ich brauche die letzte Spitze Text, die Benutzer, die sie und die Datum geschrieben bekommen, wenn er/sie schreiben schrieb.

Benutzer: Damir P.

Datum: 1314115358

Text: najjači Fitness centar u gradu

Ich habe versucht, mit JQuery und das funktioniert ein nicht holen -array Wert:

$.getJSON(url, function(data){ 
    var text= data.response.venue.tips.groups.items.text; 
    alert(text); 
}); 

Aber es funktioniert nicht mit Arrays.

Ergebnis: Uncaught TypeError: Kann die Eigenschaft 'text' von undefined nicht lesen.

Auch versuchte ich mit $ .each, aber ohne Wirkung.

$.getJSON(url, function(data){ 
    $.each(data.response.venue.tips.groups.items.text, function (index, value) { 
     console.log(value); 
    }); 
}); 

Was mache ich falsch?

+0

@JanDvorak Er ist hier zu lernen. Keine Notwendigkeit, ihn zu flammen. – Johan

+0

Gruppen ist auch ein Array. – SteveP

+0

@Johan Ich gebe zu, es war schlecht formuliert. Alles was ich wollte war, ihm die richtigen Ressourcen zu zeigen. –

Antwort

8

Sie müssen durchlaufen sowohl die Gruppen und die Elemente. $.each() nimmt eine Sammlung als ersten Parameter und data.response.venue.tips.groups.items.textversucht auf eine Zeichenfolge zeigen. Sowohl groups als auch items sind Arrays.

Ausführlich Version:

$.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' 
     }); 
    }); 
}); 

Oder einfacher:

$.getJSON(url, function (data) { 
    $.each(data.response.venue.tips.groups, function (index, value) { 
     $.each(this.items, function() { 
      console.log(this.text); 
     }); 
    }); 
}); 

Im JSON Sie angegeben, die letzte man wäre:

$.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); 
}); 

Dies würden Sie:

User: Damir P.
Date: 1314168377
Text: ajd da vidimo hocu li znati ponoviti

+0

Ausgezeichnet. Dies bekommt alle Daten, aber wie bekommt man die letzte? – Vucko

+0

@Vucko Was ist * der letzte *? =) –

+1

In diesem Fall ist der Text ** najjači fitness centar u gradu ** der letzte. Ist also der letzte Punkt "item [0] .text" oder "item [1] .text"? Und wie geht das mit deinem Code vor? – Vucko

6

Sie sind nicht über die Elemente. Versuchen Sie stattdessen:

$.getJSON(url, function(data){ 
    $.each(data.response.venue.tips.groups.items, function (index, value) { 
     console.log(this.text); 
    }); 
}); 
0

Ich glaube, Sie brauchen so etwas wie:

var text= data.response.venue.tips.groups[0].items[1].text; 
0

versuchen, diese

$.getJSON(url, function(data){ 
    $.each(data.response.venue.tips.groups.items, function (index, value) { 
     console.log(this.text); 
    }); 
}); 
+0

hallo @satish können wir 'console.log (this.text);' aus jedem verwenden, indem wir ein Array erstellen? – SagarPPanchal

Verwandte Themen