У меня есть вложенный объект JSON, который мне нужно перебрать, и значение каждого ключа может быть строкой, массивом JSON или другим объектом JSON. В зависимости от типа объекта мне нужно выполнять разные операции. Есть ли способ проверить тип объекта, чтобы узнать, является ли он строкой, объектом 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
}
}
Как выполнить проверку объекта, как показано выше?