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