/ / Como iterar um objeto json se ele tiver combinação de string, booleano e tipo de número - javascript, json, node.js

Como iterar um objeto json se ele tiver combinação de string, booleano e tipo de número - javascript, json, node.js

eu tive um node.js app onde leva objeto JSON e, em seguida,criptografa o valor da chave do objeto JSON. Eu tinha uma função que leva valor e depois criptografa os dados. Agora preciso iterar apenas o valor da chave JSON para a função que eu posso usar.

var JsonData = JSON.parse(jsonString);
var callFunction = iterate(JsonData);

function iterate(JsonData) {
for (var exKey in JsonData) {
if (JsonData.hasOwnProperty(exKey)) {
if (typeof JsonData[exKey] == "object") {
iterate(JsonData[exKey]);
} else {
JsonData[exKey] = encrypt(JsonData[exKey]);
}
}
}
}
var encrpted = JSON.stringify(JsonData);

Mas o problema é que eu sou capaz de iterar apenas o objeto JSON tipo string.i.e., (Ex {"name":"sam","gender":"male"}). Se estamos tendo objeto JSON com boolean ou número ou ambos os tipos junto com o tipo string, ele não é capaz de iterar e estou recebendo algum erro ... (ex. {"name":"sam","age":21,"isMarried":false}).

Então, como posso iterar através dessa função se eu tiver outro tipo de string? Eu sei que usando a função de substituição podemos converter boolean, tipo num para string e depois passar para a função.Mas desde que eu estou fazendo a criptografia e, em seguida, descriptografar, aqui depois de descriptografado, obtemos tudo em tipo de seqüência de caracteres, o que eu não quero.Eles precisam estar em seu tipo original.Então eu acho que isso não vai funcionar. Então alguém pode sugerir ideias e me ajudar? Espero que minha pergunta seja clara. Qualquer sugestão apreciada.

Respostas:

0 para resposta № 1

Se você quiser iterar e analisar todas as propriedades do seu objeto JSON, você pode usar Object.keys () desta maneira:

obj = {
booleanVar : true,
numericVar : 125,
stringVar : "a string"
};
var iterate = JsonData => Object.keys(JsonData).forEach(key => console.log(JsonData[key]));
iterate(obj); // true
// 125
// a string

0 para resposta № 2

Remova seu primeiro if condição.

Exemplo:

function iterate(JsonData) {
for (var exKey in JsonData) {
if (typeof JsonData[exKey] == "object") {
iterate(JsonData[exKey]);
} else {
JsonData[exKey] = encrypt(JsonData[exKey]);
}

}
}