So zeigen Sie rohe JSON-Daten auf einer HTML-Seite an [duplicate]

Lesezeit: 6 Minuten

Benutzer-Avatar
timon.ma

Mögliches Duplikat:

JSON-schöner Druck mit JavaScript

Ich möchte meine rohen JSON-Daten genauso wie JSONview auf einer HTML-Seite anzeigen. Zum Beispiel sind meine JSON-Rohdaten:

  {
   "hey":"guy",
   "anumber":243,
   "anobject":{
      "whoa":"nuts",
      "anarray":[
         1,
         2,
         "thr<h1>ee"
      ],
      "more":"stuff"
   },
   "awesome":true,
   "bogus":false,
   "meaning":null,
   "japanese":"明日がある。",
   "link":"http://jsonview.com",
   "notLink":"http://jsonview.com is great"
}

Es kommt von http://jsonview.com/und was ich erreichen möchte, ist wie http://jsonview.com/example.json wenn Sie Chrome verwenden und das JSONView-Plugin installiert haben.

Ich habe es versucht, aber nicht verstanden, wie es funktioniert. Ich möchte ein JS-Skript (CSS zum Hervorheben) verwenden, um meine rohen JSON-Daten, die von Ajax abgerufen werden, individuell zu formatieren und sie schließlich an einer beliebigen Position wie in einem Div-Element auf einer HTML-Seite abzulegen. Gibt es vorhandene JS-Bibliotheken, die dies erreichen können? Oder wie geht das?

  • Probieren Sie ein Syntax-Highlighter-Plugin aus.

    – Arvind Bhardwaj

    7. Januar 2013 um 12:04 Uhr

  • Beispiel für hübsches Drucken in JSON <pre> Block – jsfiddle.net/K83cK

    – Voller Stapel

    28. Juni 2015 um 8:59 Uhr

  • Du solltest es versuchen <pre> Block. Es ist einfach und funktioniert gut.

    – Nguyen Tran

    8. Juni 2016 um 2:30 Uhr

Ich denke, alles, was Sie brauchen, um die Daten auf einer HTML-Seite anzuzeigen, ist JSON.stringify.

Wenn Ihr JSON beispielsweise so gespeichert ist:

var jsonVar = {
        text: "example",
        number: 1
    };

Dann brauchen Sie nur dies zu tun, um es in einen String umzuwandeln:

var jsonStr = JSON.stringify(jsonVar);

Und dann können Sie zum Beispiel direkt in Ihr HTML einfügen:

document.body.innerHTML = jsonStr;

Natürlich werden Sie wahrscheinlich ersetzen wollen body mit einem anderen Element via getElementById.

Was den CSS-Teil Ihrer Frage betrifft, könnten Sie RegExp verwenden, um das stringifizierte Objekt zu manipulieren, bevor Sie es in das DOM einfügen. Zum Beispiel dieser Code (auch auf JSFiddle zu Demonstrationszwecken) sollte sich um das Einrücken von geschweiften Klammern kümmern.

var jsonVar = {
        text: "example",
        number: 1,
        obj: {
            "more text": "another example"
        },
        obj2: {
             "yet more text": "yet another example"
        }
    }, // THE RAW OBJECT
    jsonStr = JSON.stringify(jsonVar),  // THE OBJECT STRINGIFIED
    regeStr="", // A EMPTY STRING TO EVENTUALLY HOLD THE FORMATTED STRINGIFIED OBJECT
    f = {
            brace: 0
        }; // AN OBJECT FOR TRACKING INCREMENTS/DECREMENTS,
           // IN PARTICULAR CURLY BRACES (OTHER PROPERTIES COULD BE ADDED)

regeStr = jsonStr.replace(/({|}[,]*|[^{}:]+:[^{}:,]*[,{]*)/g, function (m, p1) {
var rtnFn = function() {
        return '<div style="text-indent: ' + (f['brace'] * 20) + 'px;">' + p1 + '</div>';
    },
    rtnStr = 0;
    if (p1.lastIndexOf('{') === (p1.length - 1)) {
        rtnStr = rtnFn();
        f['brace'] += 1;
    } else if (p1.indexOf('}') === 0) {
         f['brace'] -= 1;
        rtnStr = rtnFn();
    } else {
        rtnStr = rtnFn();
    }
    return rtnStr;
});

document.body.innerHTML += regeStr; // appends the result to the body of the HTML document

Dieser Code sucht einfach nach Abschnitten des Objekts innerhalb der Zeichenfolge und trennt sie in Divs (obwohl Sie den HTML-Teil davon ändern könnten). Jedes Mal, wenn es auf eine geschweifte Klammer trifft, wird jedoch die Einrückung erhöht oder verringert, je nachdem, ob es sich um eine öffnende oder eine schließende Klammer handelt (Verhalten ähnlich wie bei das Platz Argument von ‘JSON.stringify’). Aber Sie könnten dies als Grundlage für verschiedene Arten der Formatierung verwenden.

  • Diese Frage wurde anscheinend geschlossen, während ich meine Antwort veröffentlichte. Ich werde meine Antwort hier hinterlassen, falls sie für irgendjemanden von Nutzen ist, aber der Code, der als Antwort auf die identifizierte Frage gegeben wurde, für die dies ein mögliches Duplikat ist, ist etwas magischer als meiner 🙂

    – Geldbeutel

    7. Januar 2013 um 14:43 Uhr

  • Vielen Dank!! Ich möchte Ihre Methode ausprobieren. Meine HTML-Seite hat eine jquery-Bibliothek hinzugefügt. Ich frage mich, ob es eine andere Bibliothek gibt, die auf jquery basiert, damit ich mein Ziel erreichen kann. Ich möchte einfach programmieren … Hauptsächlich weil ich nicht gut in Javascript bin -.- Ich werde es versuchen!

    – timon.ma

    7. Januar 2013 um 15:20 Uhr

  • Das ist so lange Lösung. Bedeutet etwas kompliziert. Ich habe eine knifflige Lösung gefunden, mit der ich JSON-Daten in einem besseren Format anzeigen kann. hier ist deine lösung:codematrics.com/how-to-display-json-data-in-format

    – Miral Viroja

    10. Mai 2015 um 6:13 Uhr


  • Ok, die Verwendung von Regex zur Formatierung ist absolut schrecklich. Regex handhabt das Verschachteln oder Einbetten (z. B. in Zeichenfolgen innerhalb des JSON) nicht gut usw. Verwenden Sie einfach JSON.stringify(data, null, 2) wodurch die Zeichenfolge eingerückt wird für dich. div.innerHtml = '<pre>' + JSON.stringify(data, null, 2) + '</pre>'; Keine Notwendigkeit für all diesen Code.

    – DDS

    19. Mai 2019 um 19:35 Uhr

Beachten Sie, dass der von Ihnen bereitgestellte Link keine HTML-Seite, sondern ein JSON-Dokument ist. Die Formatierung erfolgt durch den Browser.

Sie müssen entscheiden, ob:

  1. Sie möchten wie in Ihrem Beispiel das rohe JSON (keine HTML-Seite) anzeigen
  2. Zeigen Sie eine HTML-Seite mit formatiertem JSON an

Wenn Sie 1. möchten, teilen Sie Ihrer Anwendung einfach mit, einen Antworttext mit JSON zu rendern, den MIME-Typ (application/json) festzulegen usw. In diesem Fall wird die Formatierung vom Browser (und/oder Browser-Plugins) übernommen.

Wenn 2., geht es darum, eine einfache minimale HTML-Seite mit dem JSON zu rendern, wo Sie sie auf verschiedene Arten hervorheben können:

  • serverseitig, abhängig von Ihrem Stack. Es gibt Lösungen für fast jede Sprache
  • clientseitig mit Javascript-Highlight-Bibliotheken.

Wenn Sie mehr Details zu Ihrem Stack angeben, ist es einfacher, Beispiele oder Ressourcen bereitzustellen.

BEARBEITEN: Für die clientseitige JS-Hervorhebung können Sie es versuchen Highlight.jszum Beispiel.

  • Es tut mir leid, aber Englisch ist nicht meine Muttersprache. Was ich will, ist 2. Die reale Instanz verhält sich so: Ich erhalte Daten durch und füge sie dann in eine HTML-Seite in ein DIV-Element ein. Rohdaten sind nicht lesbar, also ich möchte es wie JSONView formatieren, aber JSONView formatiert nur die Daten, die nur vom Server abgerufene JSON-Daten sind und kein HTML-Element enthalten.

    – timon.ma

    7. Januar 2013 um 14:59 Uhr

  • für hightlight.js habe ich es versucht, aber es scheint nicht zu funktionieren. Die json-Daten werden nur in einer Zeile angezeigt, und ich weiß nicht warum geschrieben in

    
    

    …e, ich kann keine weitere Dokumentation von bekommen softwaremaniacs.org/soft/highlight/en/description …..

    – timon.ma

    7. Januar 2013 um 15:03 Uhr

  • Hallo timon.ma. In diesem Fall schlage ich vor, dass Sie sich den Link oben auf dieser Seite ansehen: stackoverflow.com/questions/4810841/…. Es enthält ein einfaches Snippet, um Ihren JSON „hübsch auszudrucken“.

    – Rui Vieira

    7. Januar 2013 um 15:44 Uhr

  • danke, ich habe gerade erfahren, dass JSON.stringify (param1, param2, param3), das dritte, mir hilft, das Problem zu lösen. Eine weitere Frage wird in meinen JSON-Daten angezeigt, es gibt eine Markierung wie \ n, tatsächlich möchte ich es um eine Eingabe zu drucken, wie kann ich das machen?

    – timon.ma

    7. Januar 2013 um 16:14 Uhr

Benutzer-Avatar
Said Neamati

JSON in jedem HTML-Tag außer <script> Tag wäre ein bloßer Text. Es ist also so, als würden Sie Ihrer HTML-Seite eine Geschichte hinzufügen.

Aber was die Formatierung angeht, das ist eine andere Sache. Ich denke, Sie sollten den Titel Ihrer Frage ändern.

Sehen Sie sich diese Frage an. Siehe auch Dies Seite.

1136570cookie-checkSo zeigen Sie rohe JSON-Daten auf einer HTML-Seite an [duplicate]

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy