jQuery-如何从嵌套的JSON中获取JSON数组名称

jQuery - How to get JSON array name from nested JSON

本文关键字:JSON 获取 数组 嵌套 jQuery-      更新时间:2023-09-26

我是jQuery和JSON的新手。我希望你能帮我完成我的小任务。我有以下JSON对象结构:

{
    "recipe": {
        "myREAL":0,
        "mySTRING":"STRING variable",
        "myUDINT":0,
        "mybool":0,
        "ingNumber":[0,0,0,0,0],
        "ingMinimumWeight":[0,0,0,0,0],
        "ingNominalWeight":[0,0,0,0,0]
    }
}

我想获取数组名称的名称,而不是只获取索引和索引值。

到目前为止我的输出:

 Key: myREAL Value: 0
 Key: mySTRING Value: STRING variable
 Key: myUDINT Value: 0
 Key: mybool Value: 0
 Key: 0 Value: 0
 Key: 1 Value: 0
 Key: 2 Value: 0
 Key: 3 Value: 0
 Key: 4 Value: 0
 ...

我对这样的结构感兴趣:

 Key: myREAL Value: 0
 Key: mySTRING Value: STRING variable
 Key: myUDINT Value: 0
 Key: mybool Value: 0
 ingNumber:
 Key: 0 Value: 0
 Key: 1 Value: 0
 Key: 2 Value: 0
 Key: 3 Value: 0
 Key: 4 Value: 0
 ingMinimumWeight:
 ...

我希望在Jquery中执行此操作,而不指定数组变量的名称。

我的jQuery代码:

function iter(obj) {
    for (var key in obj) {
        if (typeof (obj[key]) == 'object') {
            iter(obj[key]);
        } else {
            content = " Key: " + key + " Value: " + obj[key] + ''n';
            var box = $("#myArea");
            box.val(box.val() + content);
        } 
    }
}

根据您想要的输出,您需要在再次递归调用函数之前将内容添加到box中。

function iter(obj) {
     var box = $("#myArea");
     for (var key in obj) {
        if (typeof (obj[key]) == 'object') {
            content = key+ " : 'n";
            box.val(box.val() + content);
            iter(obj[key]);
        } else {
            content = " Key: " + key + " Value: " + obj[key] + ''n';
            box.val(box.val() + content);
        } 
    }
}

DEMO

如果处理对象,则需要将属性名.append()(您使用的是Jquery对吗?)添加到文本区域。也可以使用===来检查您是否正在处理一个对象。还要检查obj[key]是否不是null,因为typeof null也计算为对象。

jsfiddle演示

function iter(obj) {
    var box = $("#myArea");
    for (var key in obj) {
        if (obj[key] !== null && typeof obj[key] === 'object') {
            box.append(key+': 'n')
            iter(obj[key]);
        } else {
            content = " Key: " + key + " Value: " + obj[key] + ''n'; 
            box.append(content);
        } 
    }
}