Javascript 如果属性每次更改名称,则遍历值

Javascript 如果属性每次更改名称,则遍历值,javascript,jquery,json,Javascript,Jquery,Json,考虑到JSON站点上的这个示例, 在我的例子中,我使用了一个API,其中有一个json,其中属性名“glossary”,每个请求都会更改。。。我的意思是如果你搜索“词汇表”,第一个属性是词汇表,如果你搜索“苹果”将是苹果,依此类推 xml更容易遍历…但我不知道如何在JSON中进行遍历 如果词汇表发生更改,我不知道如何获取值title 使用javascript/jquery,我尝试了类似于数据[0].title…的内容,但不起作用 { "glossary": {

考虑到JSON站点上的这个示例, 在我的例子中,我使用了一个API,其中有一个json,其中属性名“glossary”,每个请求都会更改。。。我的意思是如果你搜索“词汇表”,第一个属性是词汇表,如果你搜索“苹果”将是苹果,依此类推

xml更容易遍历…但我不知道如何在JSON中进行遍历 如果词汇表发生更改,我不知道如何获取值title

使用javascript/jquery,我尝试了类似于数据[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"
                    }
                }
            }
        }
    }

尝试迭代json对象中的所有属性

var json = ...; for (var i in json) { if (json.hasOwnProperty(i)) { var elem = json[i]; // handle element here } } var json=。。。; for(json中的var i){ if(json.hasOwnProperty(i)){ var elem=json[i]; //在这里处理元素 } }
hasOwnProperty确保您不会通过更改对象原型来添加属性。

如果您有兴趣返回对象的第一个也是唯一的属性,这应该可以做到:

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..没有特定的顺序。

查找标题的规则是什么?只需迭代(并跳过)顶层?而无需检查
hasOwnProperty
,这也可能遍历
某些对象的原型链中的属性。
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