Mam zagnieżdżony obiekt JSON, przez który muszę przechodzić w pętli, a wartością każdego klucza może być String, tablica JSON lub inny obiekt JSON. W zależności od rodzaju przedmiotu muszę wykonywać różne operacje. Czy istnieje sposób, aby sprawdzić typ obiektu, aby zobaczyć, czy jest to String, obiekt JSON czy tablica JSON?
Próbowałem użyć typeofi, instanceofale oba nie działały, ponieważ typeofzwróci obiekt zarówno dla obiektu JSON, jak i tablicy, i instanceofwyświetli błąd, gdy to zrobię obj instanceof JSON.
Mówiąc dokładniej, po przeanalizowaniu JSON w obiekt JS, czy istnieje sposób, w jaki mogę sprawdzić, czy jest to zwykły ciąg, czy obiekt z kluczami i wartościami (z obiektu JSON) lub tablica (z tablicy JSON )?
Na przykład:
JSON
var data = "{'hi':
{'hello':
['hi1','hi2']
},
'hey':'words'
}";
Przykładowy 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
}
}
Jak mogę sprawdzić obiekt, jak pokazano powyżej?