Maison >interface Web >js tutoriel >Comment javascript détermine-t-il s'il est au format json ?

Comment javascript détermine-t-il s'il est au format json ?

青灯夜游
青灯夜游original
2021-06-07 16:34:0732776parcourir

Méthode de jugement : utilisez d'abord l'instruction "JSON.parse(str)" pour analyser la chaîne de données spécifiée, puis utilisez l'instruction "if(typeof obj =='object'&&obj)" pour déterminer si le type des données analysées sont de type « objet » ; si c'est le cas, les données str sont au format json.

Comment javascript détermine-t-il s'il est au format json ?

L'environnement d'exploitation de ce tutoriel : système Windows 7, JavaScript version 1.8.5, ordinateur Dell G3.

js détermine si une chaîne est au format JSON

ne peut pas être simplement utilisé pour déterminer si une chaîne est au format JSON :

function isJSON(str) {
    if (typeof str == 'string') {
        try {
            JSON.parse(str);
            return true;
        } catch(e) {
            console.log(e);
            return false;
        }
    }
    console.log('It is not a string!')    
}

Ce qui précède try/catch ne peut pas vérifier complètement qu'une chaîne est une chaîne au format JSON. Il existe de nombreuses exceptions :

JSON.parse('123'); // 123
JSON.parse('{}'); // {}
JSON.parse('true'); // true
JSON.parse('"foo"'); // "foo"
JSON.parse('[1, 5, "false"]'); // [1, 5, "false"]
JSON.parse('null'); // null

Nous savons que les types de données en JS sont divisés en : chaîne. , nombre, booléen, tableau, objet, nul, non défini.

Nous pouvons utiliser la méthode suivante pour juger :

function isJSON(str) {
    if (typeof str == 'string') {
        try {
            var obj=JSON.parse(str);
            if(typeof obj == 'object' && obj ){
                return true;
            }else{
                return false;
            }

        } catch(e) {
            console.log('error:'+str+'!!!'+e);
            return false;
        }
    }
    console.log('It is not a string!')
}


console.log('123 is json? ' + isJSON('123'))
console.log('{} is json? ' + isJSON('{}'))
console.log('true is json? ' + isJSON('true'))
console.log('foo is json? ' + isJSON('"foo"'))
console.log('[1, 5, "false"] is json? ' + isJSON('[1, 5, "false"]'))
console.log('null is json? ' + isJSON('null'))
console.log('["1{211323}","2"] is json? ' + isJSON('["1{211323}","2"]'))
console.log('[{},"2"] is json? ' + isJSON('[{},"2"]'))
console.log('[[{},{"2":"3"}],"2"] is json? ' + isJSON('[[{},{"2":"3"}],"2"]'))

Le résultat courant est :

> "123 is json? false"
> "{} is json? true"
> "true is json? false"
> "foo is json? false"
> "[1, 5, "false"] is json? true"
> "null is json? false"
> "["1{211323}","2"] is json? true"
> "[{},"2"] is json? true"
> "[[{},{"2":"3"}],"2"] is json? true"

La conclusion suivante est donc tirée :

JSON.parse () La méthode est utilisée pour analyser les chaînes JSON. json.parse() convertit la chaîne en un objet json

Si JSON.parse peut être converti avec succès et que le type converti est un objet et n'est pas égal ; à null, alors Cette chaîne est une chaîne au format JSON.

JSON.parse() :

JSON est généralement utilisé pour échanger des données avec le serveur.

est généralement une chaîne lors de la réception des données du serveur.

Nous pouvons utiliser la méthode JSON.parse() pour convertir des données en objets JavaScript.

Syntaxe :

JSON.parse(text[, reviver])

Description du paramètre :

  • texte : obligatoire, une chaîne JSON valide.

  • reviver : Facultatif, une fonction qui convertit le résultat. Cette fonction sera appelée pour chaque membre de l'objet.

Avant l'analyse, assurez-vous que vos données sont au format JSON standard, sinon des erreurs d'analyse se produiront.

Pour plus de connaissances sur la programmation, veuillez visiter : Vidéo de programmation ! !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn