Im в настоящее время делает хром-приложение и Im использует локальное хранилище. Затем мой backend возвращает данные JSON, а затем я сохранил это локально, затем зашифровал все элементы внутри этого JSON. Моя проблема в том, что у меня есть разные наборы JSON, а также есть разные функции для шифрования этого.рекурсивная итерация по данным json без известной длины и глубины
Я пытался создать динамическую функцию, которая вернет копию этих наборов данных JSON, но с каждым зашифрованным элементом, но я не могу это сделать. Мой JSON состоит из массивов и объектов.
Мой вопрос: возможно ли это? Если это так, мне нужен рабочий образец.
Кстати, я использую angularJS, и это мой текущий код.
// this function returns a copy of a JSON but with encrypted values.
// encrypts objectData using base 64
// param -> objectData = data from database (rater and its ratees)
fac.encryptData = function(param) {
var raterObject = param;
var resultObject = { 'ratees':[] }; // final value will be equivalent to raterObject
for(property in raterObject) {
if(raterObject[property] instanceof Array) {
angular.forEach(raterObject[property], function(ratee, rateeKey) {
var rateeObject = { 'competencies':[] };
for(property in ratee) {
if(ratee[property] instanceof Array) {
angular.forEach(ratee[property], function(competency, competencyKey) {
var competencyObject = { 'proficiencies':[], 'competencyScoreInfo':[] };
for(property in competency) {
if(competency[property] instanceof Array) {
if(property == 'proficiencies') {
angular.forEach(competency[property], function(proficiency, proficiencyKey) {
var proficiencyObject = {};
for(property in proficiency) {
if(proficiency[property] == null) {
proficiency[property] = '';
}
if(property != '$$hashKey') {
proficiencyObject[property] = base64.encode(proficiency[property].toString());
} else {
proficiencyObject[property] = proficiency[property];
}
}
competencyObject.proficiencies.push(proficiencyObject);
});
} else if(property == 'competencyScoreInfo') { // di pa tapos
angular.forEach(competency[property], function(proficiency, proficiencyKey) {
var proficiencyObject = { 'indicators':[], 'c1':[], 'c2':[] };
for(property in proficiency) {
if(proficiency[property] instanceof Array) {
if(property == 'indicators') {
angular.forEach(proficiency[property], function(indicator, indicatorKey) {
var indicatorObject = {};
for(property in indicator) {
indicatorObject[property] = base64.encode(indicator[property].toString());
}
proficiencyObject.indicators.push(indicatorObject);
});
} else if (property == 'c1') {
angular.forEach(proficiency[property], function(valueC1, c1Key) {
var c1Object = {};
for(property in valueC1) {
c1Object[property] = base64.encode(valueC1[property].toString());
}
proficiencyObject.c1.push(c1Object);
});
} else if (property == 'c2') {
angular.forEach(proficiency[property], function(valueC2, indicatorKey) {
var c2Object = {};
for(property in valueC2) {
c2Object[property] = base64.encode(valueC2[property].toString());
}
proficiencyObject.c2.push(c2Object);
});
}
} else {
proficiencyObject[property] = base64.encode(proficiency[property].toString());
}
}
competencyObject.competencyScoreInfo.push(proficiencyObject);
});
}
} else {
if(property != '$$hashKey') {
// if(property != '$$hashKey' && property != 'commentSituationTask' && property != 'commentAction' && property != 'commentResult') {
competencyObject[property] = base64.encode(competency[property].toString());
} else {
competencyObject[property] = competency[property];
}
}
}
rateeObject.competencies.push(competencyObject);
});
} else {
if(property != 'currentPage' && property != '$$hashKey') {
rateeObject[property] = base64.encode(ratee[property].toString());
} else {
rateeObject[property] = ratee[property].toString();
}
}
}
resultObject.ratees.push(rateeObject);
});
} else {
resultObject[property] = base64.encode(raterObject[property].toString());
}
}
return resultObject;
};
У меня есть эта функция для простого шифрования конкретного JSON. Затем у меня есть другая функция шифрования для другого JSON, поэтому я хочу создать динамическую функцию для шифрования различных JSON.
Да, это звучит возможно. Но, пожалуйста, покажите нам код, который вы пробовали, и пример ввода, который не дал ожидаемых результатов. – Bergi
@ Bergi на самом деле, я не пытался его кодировать, но я попытался подумать об этом, и я не могу найти решение. но я отредактирую свой вопрос и добавлю свои текущие коды и их проблемы. –
Я бы просто изложил все это и зашифровал это, чтобы все было сделано быстро без циклов и при сохранении типов. – dandavis