У меня есть вложенный объект JSON, который мне нужно пропустить, и значение каждого ключа может быть массивом String, JSON или другим объектом JSON. В зависимости от типа объекта мне нужно выполнять разные операции. Есть ли способ проверить тип объекта, чтобы увидеть, является ли он объектом String, JSON или массивом JSON?
Я попытался использовать typeof
и instanceof
, но оба они не работали, поскольку typeof
возвращает объект как для объекта JSON, так и для массива, а instanceof
дает ошибку, когда я делаю obj instanceof JSON
.
Чтобы быть более конкретным, после разбора JSON в JS-объект, есть ли способ проверить, является ли он нормальной строкой или объектом с ключами и значениями (из объекта JSON) или массивом (из массив JSON)?
Например:
JSON
var data = "{'hi':
{'hello':
['hi1','hi2']
},
'hey':'words'
}";
Пример JavaScript
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
}
}
Как выполнить проверку объекта, как показано выше?