Я пытаюсь выполнить операции (обновлять значения, удалять ключи, добавлять ключи и т. Д.) В данные JSON, о которых я ничего не знаю. Эти элементы являются файлами свойств, а не данными JSON, возвращаемыми из приложения. Эти файлы могут быть очень разными, и мне нужно разработать метод, который может выполнять эти операции, ничего не зная о данных JSON.Итерация через весь объект JSON без знания каких-либо ключей
Я отслеживаю путь, где хранится ключ. Если бы у меня были образцы данных, как показано ниже, я бы сохранил путь, как '/ key1/innerKey5 /', и получить данные с ключом innerKey6, используя getNodeData.
Если у меня есть путь и ключ элемента, как я могу программно найти этот элемент в данных 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 Вы правы, спасибо. –