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 № 1Se 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]);
}
}
}