Javascript 遍历json节点

Javascript 遍历json节点,javascript,arrays,json,hash,Javascript,Arrays,Json,Hash,是否可以遍历所有节点并从一个复杂的json(其级别不是预先确定的)中找到想要的字段 { "_index": "test", "_type": "news", "_source": { "partnerName": "propertyFile 9", "relatedSources": "null", "entityCount": "50", "Categories": { "Types

是否可以遍历所有节点并从一个复杂的json(其级别不是预先确定的)中找到想要的字段

{
    "_index": "test",
    "_type": "news",
    "_source": {
        "partnerName": "propertyFile 9",
        "relatedSources": "null",
        "entityCount": "50",
        "Categories": {
            "Types": {
                "Events": [{
                    "count": 1,
                    "term": "Time",
                    "Time": [{
                        "term": "Dec 9",
                        "Dec_9": [{
                            "count": 1,
                            "term": "2012"
                        }]
                        }]
                    }, {
                    "count": 4,
                    "term": "News",
                    "News": [{
                        "term": "Germany",
                        "Germany": [{
                            "count": 1,
                            "term": "Election"
                        }],
                        "currency": "Euro (EUR)"
                    }, {
                        "term": "Egypt",
                        "Egypt": [{
                            "count": 1,
                            "term": "Revolution"
                        }]
                        }]
                    }]
                }
        }
    }
}

我可以进入第一级,bt如果第一级中没有字段名,我如何进入第二级。我就是这样开始的

我希望这能解决你的问题。有一些功能,也有一些解释。希望这能帮到你。

我启动了一个函数,它将在您介绍的结构对象上工作。如果有多个同名键,它只会返回遇到的第一个键

var findDeepKey = function(obj, key){
    var results = [];

    if (typeof obj !== 'object') return null;

    for (var k in obj) {
        if (k === key) return obj[k];
    }

    for (var k in obj) {
        if (typeof obj[k] === 'object') {
            if (obj[k].length) {
                for (var i = 0, il = obj[k].length; i < il; i++) {
                    results.push(findDeepKey(obj[k][i], key));
                }
            } else {
                for (var kk in obj[k]) {
                    if (kk === key) return obj[k][kk];
                    results.push(findDeepKey(obj[k][kk], key));
                }
            }
        }
    }

    for (var i = 0, il = results.length; i < il; i++) {
        if (results[i] !== null) return results[i];
    }

    return null;
};
var findDeepKey=函数(obj,键){
var结果=[];
if(typeof obj!=“object”)返回null;
用于(obj中的var k){
如果(k==key)返回obj[k];
}
用于(obj中的var k){
if(对象的类型[k]=“对象”){
if(obj[k].长度){
对于(var i=0,il=obj[k]。长度;i

您可以使用

@penartur我想从文本框打印给定字段名的输出。Ivnt在FIDLE中添加了文本框。im jst手动提供值。这正是我要寻找的,bt我们如何找到所有类似出现的术语例如。。