我試圖對JSON數據執行操作(更新值,刪除鍵,添加鍵等),這些我都不知道。這些項目實際上是屬性文件,而不是從應用程序返回的JSON數據。這些文件可能會非常不同,我需要開發一種方法,可以在不瞭解JSON數據的情況下執行這些操作。在不知道任何鍵的情況下遍歷整個JSON對象
我跟蹤密鑰存儲位置的路徑。如果我有如下所示的樣本數據,我會將路徑存儲爲'/ key1/innerKey5 /',並使用getNodeData獲取具有密鑰innerKey6的數據。
如果我有項目的路徑和密鑰,如何以編程方式在JSON數據中找到此項目並刪除或更新項目?
var originalData = someMethodToGetJSONData();
var currentData; // Global variable storing a copy of the original data which can be modified
json = {
"key1": {
"innerKey1": {
"innerKey2" : {
"innerKey3": "value1",
"innerKey4": "value2"
}
},
"innerKey5": {
"innerKey6": "value1"
}
},
"key2": "value3",
"key3": "value4"
}
function getKeysFromPath(keyPath) {
var split = keyPath.split('/');
var keys = [];
for(var i = 0; i < split.length; i++) {
if(split[i] != '') {
keys.push(split[i]);
}
}
return keys
}
function getNodeData(keyPath) {
var keys = getKeysFromPath(keyPath);
nodeData = currentItemData;
for(var i = 0; i < keys.length; i++) {
nodeData = nodeData[keys[i]];
}
return nodeData;
}
data = getNodeData('/key1/innerKey5/');
key = 'innerKey6';
console.log('Data: ' + data[key]);
忌諱:JSON對象只有兩個屬性:'parse'和'stringify'。你有一個* JavaScript對象*,或者只是一個*對象*,而不是一個JSON對象。 – Amadan
看看使用[Object.keys()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys) – charlietfl
@Amadan你是對的,謝謝。 –