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
Libérer: 2024-12-13 14:18:14
original
463 Les gens l'ont consulté

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
Copier après la connexion

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>';
  });
}
Copier après la connexion

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; }
Copier après la connexion

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!

source: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 gérer efficacement le comportement du bouton Précédent du navigateur en JavaScript ?
Déclaration de ce site Web
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
Derniers articles par auteur
Derniers numéros
Rubriques connexes
Plus>
Recommandations populaires
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal