Как мне ссылаться на вложенный массив в моих данных JSON? - PullRequest
5 голосов
/ 14 сентября 2010

Мне нужна помощь для доступа к вложенному массиву, расположенному в моем наборе данных JSON.Вот первая запись моего массива JSON верхнего уровня:

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

Я хотел бы знать, как я могу получить доступ к комментариям и данным участников, используя следующую запись:

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

В настоящее время эта форма точечной нотации работает для других записей в массиве JSON ... Я хочу вернуть все эти данные в виде строк.

Ответы [ 3 ]

1 голос
/ 14 сентября 2010

Ну, comments и participants - это массивы, так что вы можете обращаться к ним как к обычным массивам, например ::100100

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]);
    }
}
1 голос
/ 14 сентября 2010

Я не совсем уверен, что вы собираетесь делать, но, возможно, это укажет вам правильное направление:

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(", "));
}
0 голосов
/ 14 сентября 2010

В вашем коде нет ничего плохого: pingFeed[k].comments вернет массив, а pingFeed[k].comments[0] вернет первый комментарий из этого массива.

Попробуйте здесь
http://jsfiddle.net/U8udd/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...