Comment vérifier si JavaScript objet JSON

J'ai un imbriquée objet JSON que j'ai besoin de boucle, et la valeur de chaque clé peut être une Chaîne de caractères, tableau JSON ou un autre objet JSON. Selon le type d'objet, j'ai besoin de réaliser différentes opérations. Est-il possible que je puisse vérifier le type de l'objet pour voir si c'est une Chaîne, objet JSON ou tableau JSON?

J'ai essayé d'utiliser typeof et instanceof mais les deux n'ont pas l'air de fonctionner, comme typeof retourne un objet à la fois d'objet JSON et le tableau, et instanceof donne une erreur quand je fais obj instanceof JSON.

Pour être plus précis, après l'analyse du JSON dans un JS objet, est-il possible que je puisse vérifier si il est normal de chaîne ou un objet avec des clés et des valeurs (à partir d'un objet JSON), ou un tableau (à partir d'un tableau JSON)?

Par exemple:

JSON

var data = "{'hi':
             {'hello':
               ['hi1','hi2']
             },
            'hey':'words'
           }";

Exemple De Code 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 puis-je réaliser l'objet de la vérification, comme indiqué ci-dessus?

  • JSON c'est juste une notation stockées sous forme de chaîne. Êtes-vous sûr que vous êtes de ne pas confondre les termes?
  • Nope, j'ai mis à jour la question pour la rendre plus claire. Je suppose que ma question principale est de savoir ce qui se passe après, nous faisons un .parse() sur une chaîne JSON, et comment l'identifier?
  • le changement n'a pas fait ça plus clair (à lea pour moi). Que faire si vous donner l'exemple de JSON que vous avez à traiter avec des
  • Mise à jour de la question avec un exemple. (:
  • La vraie question est: pourquoi s'en faire?
  • Vous ne pouvez pas savoir si "niveau1 était autrefois un objet JSON". Vous ne pouvez pas le savoir c'est un objet maintenant.
  • Parce que fondée sur ce qu'il était à l'origine, j'ai besoin de réaliser différentes opérations.
  • Votre parler de ce que l'objet a été anciennement me confond. Avant de vous analysé les données, jsonObj.niveau1 n'existait pas. Après avoir analysé c'est un objet.
  • Ok, il semble que ma question est encore confuse. J'ai édité de nouveau la question. Espérons que cela aide.
  • Le whatIsIt méthode que j'ai proposé ci-dessous devraient travailler bien pour vous.

InformationsquelleAutor Wei Hao | 2012-06-25