1. 程式人生 > >【Javascript】操作json 多層json物件,根據key獲取value;獲取json的所有的key

【Javascript】操作json 多層json物件,根據key獲取value;獲取json的所有的key

/**
 * 根據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);