Обход значения, если свойство каждый раз меняет имя - PullRequest
0 голосов
/ 18 марта 2011

с учетом этого примера, найденного на сайте JSON, в моем случае я использую API, где у меня есть json, где имя свойства " глоссарий " меняется для каждого запроса ... Я имею в виду, если вы ищете " глоссарий " первое свойство - глоссарий , если вы ищете " apple ", это будет apple и т. д. ...

xml было проще пройти ... но я не знаю, как это сделать в JSON я не знаю, как получить значение title , если глоссарий меняется ...

используя javascript / jquery, я пробовал что-то вроде data [0] .title ... но не работает

{
        "glossary": {
            "title": "example glossary",
            "GlossDiv": {
                "title": "S",
                "GlossList": {
                    "GlossEntry": {
                        "ID": "SGML",
                        "SortAs": "SGML",
                        "GlossTerm": "Standard Generalized Markup Language",
                        "Acronym": "SGML",
                        "Abbrev": "ISO 8879:1986",
                        "GlossDef": {
                            "para": "A meta-markup language, used to create markup languages such as DocBook.",
                            "GlossSeeAlso": ["GML", "XML"]
                        },
                        "GlossSee": "markup"
                    }
                }
            }
        }
    }

Ответы [ 3 ]

1 голос
/ 18 марта 2011
for (property_name in some_object) {
    some_object[property_name]...
}
0 голосов
/ 18 марта 2011

Если вы заинтересованы в возвращении первого и единственного свойства объекта, это должно помочь:

function getChild(obj){
    var prop;
    for(prop in obj){
        if(Object.prototype.hasOwnProperty.call(obj,prop)){
            return obj[prop];
        }
    }
}

var json={glossary:{...}};

var child = getProp(json); // child should now contain the glossary object

Следует отметить, что в случаях, когда в объекте json имеется несколько свойств, не может быть никакой гарантии того, какой дочерний элемент будет возвращен, поскольку обход for..in не имеет определенного порядка.

0 голосов
/ 18 марта 2011

Попробуйте перебрать все свойства внутри вашего объекта json

var json = ...;

for (var i in json) {
    if (json.hasOwnProperty(i)) {
        var elem = json[i];
        // handle element here
    }
}

hasOwnProperty гарантирует, что вы не получите свойства, добавленные при изменении прототипа объекта.

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