我试图对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你是对的,谢谢。 –