Ho un oggetto JSON nidificato che devo scorrere e il valore di ciascuna chiave potrebbe essere una stringa, un array JSON o un altro oggetto JSON. A seconda del tipo di oggetto, devo eseguire diverse operazioni. C'è un modo per controllare il tipo di oggetto per vedere se è una stringa, un oggetto JSON o un array JSON?
Ho provato a usare typeof
e instanceof
ma entrambi non sembravano funzionare, poiché typeof
restituirà un oggetto sia per l'oggetto JSON che per l'array e instanceof
restituisce un errore quando lo faccio obj instanceof JSON
.
Per essere più precisi, dopo aver analizzato il JSON in un oggetto JS, esiste un modo per verificare se si tratta di una stringa normale o di un oggetto con chiavi e valori (da un oggetto JSON) o un array (da un array JSON )?
Per esempio:
JSON
var data = "{'hi':
{'hello':
['hi1','hi2']
},
'hey':'words'
}";
JavaScript di esempio
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
}
}
Come si esegue il controllo dell'oggetto come mostrato sopra?