5 Stimmen

Wie referenziere ich ein verschachteltes Array innerhalb meiner JSON-Daten?

Ich brauche Hilfe beim Zugriff auf ein verschachteltes Array, das sich in meinem JSON-Datensatz befindet. Hier ist der erste Eintrag meiner Top-Level-JSON-Array:

{
    "pingFeed": [{
        "header": "Get Drinks?",
        "picture": "images/joe.jpg",
        "location": "Tartine's, SF",
        "time": "Tomorrow Night",
        "name": "Joe Shmoe",
        "pid":
        "123441121",
        "description": "Let's drop some bills, yal!",
        "comments": [{
            "author": "Joe S.",
            "text": "I'm Thirsty"
        },
        {
            "author": "Adder K.",
            "text":
            "Uber Narfle"
        },
        {
            "author": "Sargon G.",
            "text": "taeber"
        },
        {
            "author": "Randy T.",
            "text": "Powdered Sugar"
        },
        {
            "author": "Salvatore D.",
            "text":
            "Chocolate with Sprinkles"
        },
        {
            "author": "Jeff T.",
            "type": "Chocolate"
        },
        {
            "author": "Chris M.",
            "text": "Maple"
        }],
        "joined": false,
        "participants": [
        "Salvatore G.", "Adder K.", "Boutros G."],
        "lat": 37.25,
        "long": 122,
        "private": true
    }]
}

Ich möchte wissen, wie ich auf die Kommentare und Teilnehmerdaten zugreifen kann, indem ich die folgende Notation verwende:

for (var k = 0; k < pingFeed.length ; k++) {
    console.log(pingFeed[k].comments);
    console.log(pingFeed[k].participants);
 }

Derzeit funktioniert diese Form der Punktnotation für die anderen Einträge im JSON-Array... Ich bin auf der Suche nach all diesen Daten als Strings zurück.

1voto

Felix Kling Punkte 751464

Nun, comments y participants sind Arrays, so dass man auf sie wie auf normale Arrays zugreifen kann, z.B.:

for (var k = 0; k < pingFeed.length ; k++) {
    var comments = pingFeed[k].comments;
    for(var i = 0, length = comments.length; i < length; ++i) {
        console.log(comments[i]);
    }
}

1voto

palswim Punkte 11356

Ich bin mir nicht ganz sicher, was Sie vorhaben, aber vielleicht hilft Ihnen das weiter:

for (var k = 0; k < pingFeed.length; k++) {
    for (var i = 0; i < pingFeed[k].comments.length; i++) {
        var oComments = pingFeed[k].comments[i];
        console.log( oComments.author + ": " + oComments.text );
    }
    console.log(pingFeed[k].participants.join(", "));
}

0voto

Nikita Rybak Punkte 66202

An Ihrem Code ist nichts auszusetzen: pingFeed[k].comments gibt Array und pingFeed[k].comments[0] gibt den ersten Kommentar aus diesem Array zurück.

Versuchen Sie es hier
http://jsfiddle.net/U8udd/

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X