【发布时间】:2016-10-02 23:35:37
【问题描述】:
我正在尝试对我一无所知的 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 对象,或者只是一个 object,而不是 JSON 对象。 -
研究使用Object.keys()
-
@Amadan 你是对的,谢谢。
标签: javascript jquery json web