J'ai un objet JSON imbriqué que je dois parcourir en boucle, et la valeur de chaque clé peut être une chaîne, un tableau JSON ou un autre objet JSON. En fonction du type d'objet, je dois effectuer des opérations différentes. Existe-t-il un moyen de vérifier le type de l'objet pour savoir s'il s'agit d'une chaîne, d'un objet JSON ou d'un tableau JSON ?
J'ai essayé d'utiliser typeof
y instanceof
mais les deux ne semblent pas fonctionner, car typeof
retournera un objet pour les objets JSON et les tableaux, et instanceof
donne une erreur lorsque je fais obj instanceof JSON
.
Pour être plus précis, après avoir analysé le JSON dans un objet JS, existe-t-il un moyen de vérifier s'il s'agit d'une chaîne normale, d'un objet avec des clés et des valeurs (à partir d'un objet JSON), ou d'un tableau (à partir d'un tableau JSON) ?
Par exemple :
JSON
var data = "{'hi':
{'hello':
['hi1','hi2']
},
'hey':'words'
}";
Exemple de 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
}
}
Comment effectuer le contrôle d'objet comme indiqué ci-dessus ?