Разбор через объект - PullRequest
       17

Разбор через объект

1 голос
/ 20 апреля 2011

У меня есть этот объект, и я хочу получить имя портала.Как бы мне это сделать, используя JS или jquery

OBJECT

var Test = {};

Test.Customers = [{"CustomerItems":
                            "Portals":
                            {"id":"1","customer":"1950","resident":"yes",
                            "CustomPortals":
                                        [
                                        {"id":"11","test":"4251","portalname":"tye.jpg"},
                                         {"id":"12","test":"4251","portalname":"Lsdf.jpg"},
                                         {"id":"13","test":"4251","portalname":"nick.jpg"}
                                         ]
                            }
                    },
                    {"CustomerItems":
                            "Portals":
                            {"id":"2","customer":"1952","resident":"yes",
                            "CustomPortals":
                                        [
                                        {"id":"14","test":"4252","portalname":"Chrysanthemum2.jpg"},
                                         {"id":"15","test":"4255","portalname":"navagin.jpg"},
                                         {"id":"16","test":"4257","portalname":"jasoria.jpg"}
                                         ]
                            }
                    },
                    {"CustomerItems":
                            "Portals":
                            {"id":"3","customer":"1950","resident":"yes",
                            "CustomPortals":
                                        [
                                        {"id":"17","test":"4231","portalname":"Zsryanmum1.jpg"},
                                         {"id":"18","test":"4651","portalname":"Ltd1.jpg"},
                                         {"id":"19","test":"4281","portalname":"ser1.jpg"}
                                         ]
                            }
                    }
                ]

TRIED

 $.each(Test.Customers, function(index, value) {

                $.each(value.CustomPortals, function(innerIndex, innerValue) {
                    alert('File ' + innerValue + ' in customer ' + innerIndex);
                });

            });

Но этоне работает

спасибо

Ответы [ 3 ]

3 голосов
/ 20 апреля 2011

Ваш внутренний цикл ".each ()" должен пройти через "CustomerItems.Portals", чтобы перейти к "CustomPortals":

            $.each(value.CustomerItems.Portals.CustomPortals, function(innerIndex, innerValue) {
                alert('File ' + innerValue + ' in customer ' + innerIndex);
            });

Вероятно, было бы неплохо добавить некоторые тесты существования, но вы знаете свои данные лучше, чем я.

изменить & mdash; @justkt имеет действительно хорошее замечание - что JSON, как указано здесь, в первую очередь недействителен. Таким образом, то, что я написал выше, будет истинным , если материал может быть проанализирован: -)

2 голосов
/ 20 апреля 2011

Когда я запускал ваш объект через JSONLint (хотя я знаю, что JSON более строг, чем объекты JS, это простой валидатор), он жаловался на этот синтаксис:

"CustomerItems" : "Portals" : {}

Удаляя «Порталы»и вместо этого установив:

"CustomerItems" : {}

и используя JS ниже:

$.each(Test.Customers, function(index, value) {

    $.each(value.CustomerItems.CustomPortals, function(innerIndex, innerValue) {
        alert('File ' + innerValue.portalname + ' in customer ' + innerValue.id);
    });

});

Мне удалось получить рабочий итератор, который вы можете увидеть в действии здесь .

2 голосов
/ 20 апреля 2011

Попробуйте

alert('File ' + innerValue.portalname + ' in customer ' + innervalue.id);

вместо

alert('File ' + innerValue + ' in customer ' + innerIndex);
...