【Javascript】操作json 多层json对象,根据key获取value;获取json的所有的key

本文详细介绍了如何使用JavaScript操作JSON对象,包括如何根据多层键来获取对应的值,以及如何遍历JSON获取所有的键。无论是在前端开发还是后端处理,这些技巧对于处理复杂的JSON数据都是至关重要的。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/**
 * 根据key找value:当key都是唯一、不会重复的时候
 * @param jsonData:json数据
 * @param pathArr:路径(带父级),如:girlfriend.age
 * @return {Array}
 */
function getValueByKey (data, field) {
    for (let key in data) {
        if (key === field) {
            return data[key];
        }
        if (typeof(data[key]) === 'object' && data[key].length === undefined) {
            return getValueByKey(data[key], textField);
        } 
    }
}

var jsonObj = {
    "中国": {
        "北京": [
            "朝阳"
        ],
        "广州": [
            "天河"
        ]
    },
    "美国": {},
    "英国": [
        "爱尔兰"
    ]
}

var result = getValueByKey(jsonObj, '广州');
console.log(result);  //['天河']
/**
 * 根据key的路径找value
 * @param jsonData:json数据
 * @param pathArr:路径(带父级),如:girlfriend.age
 * @return {Array}
 */
 function getValueByKey(jsonData, pathArr) {
    var values = [];

    for (var idx in pathArr) {
        var valueJson = {};
        valueJson.path = pathArr[idx];

        var keyArr = pathArr[idx].split(".");

        var value = jsonData;

        for (var i in keyArr) {
            value = value[keyArr[i]];
        }

        valueJson.value = value;
        values.push(valueJson);

    }
    return values;
}

var jsonData = {
    name: 'simet',
    age: 22,
    girlfriend: {
        name: 'betty',
        age: 21,

    }
};

var cc = getValueByKey(jsonData, ['girlfriend.age', 'age']);
console.log(cc);
/**
 * 获取json的所有key
 * @param jsonObj:json值
 * @param parentPath
 * @return {Array}
 */
function getKeyAndPath(jsonObj, parentPath) {
    var keyJsonArr = [];
    var space = '';
    if (parentPath != null) {
        for (var i = 0; i < parentPath.split('.').length; i++) {
            space = space + ' ';
        }
    }
    for (var key in jsonObj) {
        var path;
        if (parentPath == null) {
            path = key;
        } else {
            path = parentPath + '.' + key;
        }
        var keyJsonObj = {};
        keyJsonObj.key = key;
        keyJsonObj.newKey = space + key;
        keyJsonObj.path = path;
        keyJsonArr.push(keyJsonObj);
        if (typeof (jsonObj[key]) == 'object' && jsonObj[key].length == undefined) {
            keyJsonArr = keyJsonArr.concat(getKeyAndPath(jsonObj[key], path));
        }
    }
    return keyJsonArr;
}
var aaaaa = getKeyAndPath(jsonData);
console.log(aaaaa);
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值