Maison >interface Web >js tutoriel >Comment puis-je améliorer la lisibilité JSON en utilisant la jolie impression et la coloration syntaxique ?

Comment puis-je améliorer la lisibilité JSON en utilisant la jolie impression et la coloration syntaxique ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-13 14:18:14464parcourir

How can I improve JSON readability using pretty-printing and syntax highlighting?

JSON joliment imprimé pour une lisibilité humaine

JSON joliment imprimé peut améliorer la lisibilité en introduisant une indentation, des espaces et potentiellement des couleurs ou des styles de police. Voici deux approches :

Jolie-impression intégrée

La fonction JSON.stringify() de JavaScript fournit des capacités natives de jolie impression. Passez le troisième argument comme niveau d'espacement :

var str = JSON.stringify(obj, null, 2); // spacing level = 2

Mise en évidence de la syntaxe avec des expressions régulières

Pour la mise en évidence de la syntaxe, vous pouvez utiliser des expressions régulières pour coder en couleur différents JSON éléments :

function syntaxHighlight(json) {
  json = json.replace(/&amp;/g, '&amp;amp;').replace(/</g, '&amp;lt;').replace(/>/g, '&amp;gt;');
  return json.replace(/("(\u[a-zA-Z0-9]{4}|\[^u]|[^\"])*"(\s*:)?|\b(true|false|null)\b|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?)/g, function (match) {
    var cls = 'number';
    if (/^"/.test(match)) {
      if (/:$/.test(match)) {
        cls = 'key';
      } else {
        cls = 'string';
      }
    } else if (/true|false/.test(match)) {
      cls = 'boolean';
    } else if (/null/.test(match)) {
      cls = 'null';
    }
    return '<span class="' + cls + '">' + match + '</span>';
  });
}

Complet Exemple

Voici un extrait complet qui démontre les deux méthodes :

<div class="snippet" data-lang="js" data-hide="true" data-console="false" data-babel="false">
  <div class="snippet-code snippet-currently-hidden">
    <pre class="snippet-code-js lang-js prettyprint-override">function output(inp) {
        document.body.appendChild(document.createElement('pre')).innerHTML = inp;
    }

    function syntaxHighlight(json) {
        json = json.replace(/&amp;/g, '&amp;amp;').replace(/</g, '&amp;lt;').replace(/>/g, '&amp;gt;');
        return json.replace(/("(\u[a-zA-Z0-9]{4}|\[^u]|[^\"])*"(\s*:)?|\b(true|false|null)\b|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?)/g, function (match) {
            var cls = 'number';
            if (/^"/.test(match)) {
                if (/:$/.test(match)) {
                    cls = 'key';
                } else {
                    cls = 'string';
                }
            } else if (/true|false/.test(match)) {
                cls = 'boolean';
            } else if (/null/.test(match)) {
                cls = 'null';
            }
            return '<span class="' + cls + '">' + match + '</span>';
        });
    }

    var obj = {a:1, 'b':'foo', c:[false,'false',null, 'null', {d:{e:1.3e5,f:'1.3e5'}}]};
    var str = JSON.stringify(obj, undefined, 4);

    output(str);
    output(syntaxHighlight(str));
pre {outline: 1px solid #ccc; padding: 5px; margin: 5px; }
.string { color: green; }
.number { color: darkorange; }
.boolean { color: blue; }
.null { color: magenta; }
.key { color: red; }

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!

json for using function
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
Article précédent:Comment puis-je détecter de manière fiable les instances de date JavaScript invalides ?Article suivant:Comment puis-je détecter de manière fiable les instances de date JavaScript invalides ?

Articles Liés

Voir plus