首页 > 解决方案 > 嵌套 JSON 和 awesomecomplete.js

问题描述

我对嵌套的 JSON 文件有疑问。怎么称呼“名字”?

JSON 文件

{
  "city": [{
    "name":"Belgium",
    "topLevelDomain":[".be"]
   }]
}

javascript

var ajax = new XMLHttpRequest();
ajax.open("GET", "http://exapmple.com/example.json",true);

ajax.onload = function() {
   var list = JSON.parse(ajax.responseText).map(function(i) { return i.name;});
   new Awesomplete(document.querySelector("#search"),{ list: list });
}; 
ajax.send();

标签: javascriptjson

解决方案


您必须在对象内部进行深入搜索。

var obj=[{
  "city": [{
    "name":"Belgium",
    "topLevelDomain":[".be"]
   }]
}]
function searchInside(object){
    if(object.hasOwnProperty('name'))
        return object.name;

    for(var i=0;i<Object.keys(object).length;i++){
        if(typeof object[Object.keys(object)[i]]=="object"){
            o=searchInside(object[Object.keys(object)[i]]);
            if(o!=null)
                return o;
        }
    }

    return null;
}
console.log(searchInside(obj))


推荐阅读