Ich erstelle ein PHP-Skript, das JSON-Daten einem anderen Skript zuführt. Mein Skript baut Daten in ein großes assoziatives Array ein und gibt die Daten dann mit aus json_encode
. Hier ist ein Beispielskript:
$data = array('a' => 'apple', 'b' => 'banana', 'c' => 'catnip');
header('Content-type: text/javascript');
echo json_encode($data);
Der obige Code liefert die folgende Ausgabe:
{"a":"apple","b":"banana","c":"catnip"}
Das ist großartig, wenn Sie eine kleine Datenmenge haben, aber ich würde etwas in dieser Richtung bevorzugen:
{
"a": "apple",
"b": "banana",
"c": "catnip"
}
Gibt es eine Möglichkeit, dies in PHP ohne einen hässlichen Hack zu tun? Es scheint, als hätte jemand bei Facebook es herausgefunden.
php
json
pretty-print
Zach Rattner
quelle
quelle
up_json_encode($data, JSON_PRETTY_PRINT);
Content-Type: application/json
Firefox das Ergebnis nur durch Senden des Headers mit einem eigenen internen JSON-Parser an, während Chrome den Klartext anzeigt. +1 Firefox!Antworten:
PHP 5.4 bietet die
JSON_PRETTY_PRINT
Option zur Verwendung mit demjson_encode()
Anruf.http://php.net/manual/en/function.json-encode.php
quelle
Content-Type
,application/json
wenn der Browser hübsch gedrucktes JSON gut anzeigen soll.<pre>
Tag wie<?php ... $json_string = json_encode($data, JSON_PRETTY_PRINT); echo "<pre>".$json_string."<pre>";
Diese Funktion nimmt JSON-Zeichenfolgen und rückt sie gut lesbar ein. Es sollte auch konvergent sein,
Eingang
Ausgabe
Code
quelle
Viele Benutzer haben vorgeschlagen, dass Sie verwenden
Welches ist absolut richtig. Es reicht jedoch nicht aus, der Browser muss den Datentyp verstehen. Sie können den Header angeben, bevor Sie die Daten an den Benutzer zurücksenden.
Dies führt zu einer gut formatierten Ausgabe.
Wenn Sie Erweiterungen mögen, können Sie auch JSONView für Chrome verwenden.
quelle
Ich hatte das gleiche Problem.
Jedenfalls habe ich hier nur den JSON-Formatierungscode verwendet:
http://recursive-design.com/blog/2008/03/11/format-json-with-php/
Funktioniert gut für das, wofür ich es brauchte.
Und eine gepflegte Version: https://github.com/GerHobbelt/nicejson-php
quelle
Mir ist klar, dass in dieser Frage gefragt wird, wie ein assoziatives Array in eine hübsch formatierte JSON-Zeichenfolge codiert werden soll. Dies beantwortet die Frage also nicht direkt. Wenn Sie jedoch eine Zeichenfolge haben, die bereits im JSON-Format vorliegt, können Sie sie ganz einfach erstellen durch Dekodieren und Neukodieren (erfordert PHP> = 5.4):
Beispiel:
Dies gibt aus:
quelle
Das Zusammenkleben mehrerer Antworten passt zu meinem Bedürfnis nach vorhandenem JSON:
quelle
function json_print($json) { return '<pre>' . json_encode(json_decode($json), JSON_PRETTY_PRINT) . '</pre>'; }
Ich habe den Code von Composer übernommen: https://github.com/composer/composer/blob/master/src/Composer/Json/JsonFile.php und nicejson: https://github.com/GerHobbelt/nicejson-php/blob /master/nicejson.php Composer-Code ist gut, da er fließend von 5.3 auf 5.4 aktualisiert wird, aber nur Objekte codiert, während nicejson JSON-Zeichenfolgen verwendet, sodass ich sie zusammengeführt habe. Der Code kann verwendet werden, um JSON-Zeichenfolgen zu formatieren und / oder Objekte zu codieren. Ich verwende ihn derzeit in einem Drupal-Modul.
quelle
Wenn Sie auf Firefox sind, installieren Sie JSONovich . Nicht wirklich eine PHP-Lösung, die ich kenne, aber sie macht den Trick für Entwicklungszwecke / Debugging.
quelle
Ich habe das benutzt:
Oder verwenden Sie PHP-Header wie folgt:
quelle
Einfacher Weg für PHP> 5.4: wie im Facebook-Diagramm
Ergebnis im Browser
quelle
Verwendung
<pre>
in Kombination mitjson_encode()
und derJSON_PRETTY_PRINT
Option:quelle
Wenn Sie bereits JSON (
$ugly_json
) habenquelle
Farbe voll ausgeben: Kleine Lösung
Code:
quelle
Sie können die Antwort von Kendall Hopkins in der switch-Anweisung ein wenig ändern, um einen ziemlich sauber aussehenden und gut eingerückten Ausdruck zu erhalten, indem Sie eine json-Zeichenfolge wie folgt übergeben:
}}
Führen Sie jetzt einfach die Funktion PrettyPrint ($ your_json_string) aus. Inline in Ihrem PHP und genießen Sie den Ausdruck. Wenn Sie eine minimalistische und nicht wie Klammern aus irgendeinem Grund sind, können Sie einfach loswerden diejenigen erhalten , indem der Austausch
$char.="<br>";
mit$char="<br>";
in den oberen drei Schalter Fällen auf $ char. Folgendes erhalten Sie für einen Google Maps-API-Aufruf für die Stadt Calgaryquelle
Sie könnten es wie unten tun.
Oben würde eine Art wie Facebook ausgeben.
quelle
a_val
es sich um ein Array oder ein Objekt handelt?Klassischer Fall für eine rekursive Lösung. Hier ist meins:
Verwendungszweck:
Prost
quelle
Diese Lösung macht JSON wirklich hübsch. Nicht genau das, wonach das OP gefragt hat, aber Sie können den JSON besser visualisieren.
}}
quelle
Wenn Sie nur verwendet haben
$json_string = json_encode($data, JSON_PRETTY_PRINT);
, erhalten Sie im Browser so etwas (über den Facebook-Link aus der Frage :)):aber wenn Sie eine Chrome - Erweiterung wie verwendet JSONView (auch ohne die PHP - Option oben), dann bekommt man eine ziemlich lesbar debug Lösung , wo Sie können sogar Falten / Reduzieren jedes einzelne JSON - Objekt leicht wie folgt aus :
quelle
print_r hübscher Druck für PHP
Beispiel PHP
quelle
1 -
json_encode($rows,JSON_PRETTY_PRINT);
gibt hübsche Daten mit Zeilenumbrüchen zurück. Dies ist hilfreich für die Befehlszeileneingabe, sieht aber, wie Sie festgestellt haben, im Browser nicht so hübsch aus. Der Browser akzeptiert die Zeilenumbrüche als Quelle (und beim Anzeigen der Seitenquelle wird zwar der hübsche JSON angezeigt), sie werden jedoch nicht zum Formatieren der Ausgabe in Browsern verwendet. Browser benötigen HTML.2 - Verwenden Sie diesen Funktionsgithub
quelle
Folgendes hat bei mir funktioniert:
Inhalt von test.php:
Ausgabe:
Beachten Sie auch die Verwendung des Tags "pre" in HTML.
Hoffe das hilft jemandem
quelle
Der beste Weg, um JSON-Daten zu formatieren, ist so!
Ersetzen Sie $ response durch Ihre Daten, die in JSON konvertiert werden müssen
quelle
Für diejenigen, die PHP Version 5.3 oder früher ausführen, können Sie Folgendes versuchen:
quelle
Wenn Sie mit MVC arbeiten
Versuchen Sie dies in Ihrem Controller
Wenn Sie dann / getLatestUsers aufrufen, erhalten Sie eine hübsche JSON-Ausgabe;)
quelle