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