Eu tenho um objeto JSON aninhado que preciso percorrer, e o valor de cada chave pode ser uma String, matriz JSON ou outro objeto JSON. Dependendo do tipo de objeto, preciso realizar diferentes operações. Existe alguma maneira de verificar o tipo do objeto para ver se é uma String, objeto JSON ou array JSON?
Tentei usar typeof
e, instanceof
mas os dois não parecem funcionar, pois typeof
retornará um objeto para o objeto JSON e para o array e instanceof
dará um erro ao fazer isso obj instanceof JSON
.
Para ser mais específico, depois de analisar o JSON em um objeto JS, há alguma maneira de verificar se é uma string normal, ou um objeto com chaves e valores (de um objeto JSON), ou uma matriz (de uma matriz JSON )?
Por exemplo:
JSON
var data = "{'hi':
{'hello':
['hi1','hi2']
},
'hey':'words'
}";
JavaScript de amostra
var jsonObj = JSON.parse(data);
var path = ["hi","hello"];
function check(jsonObj, path) {
var parent = jsonObj;
for (var i = 0; i < path.length-1; i++) {
var key = path[i];
if (parent != undefined) {
parent = parent[key];
}
}
if (parent != undefined) {
var endLength = path.length - 1;
var child = parent[path[endLength]];
//if child is a string, add some text
//if child is an object, edit the key/value
//if child is an array, add a new element
//if child does not exist, add a new key/value
}
}
Como faço a verificação do objeto conforme mostrado acima?