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 typeofe instanceofma entrambi non sembravano funzionare, poiché typeofrestituirà un oggetto sia per l'oggetto JSON che per l'array e instanceofrestituisce 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?