PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : php & json_encode() - format



Ka55i0peia
06-12-2008, 18:00
Hi Leute,
gibt es eine Möglichkeit die Ausgabe der php-Funktion

json_encode( $string )
zu verbessern!?

Der Ausgabestring wird bei großem Umfang schnell unübersichtlich (ohne Zeilenumbruch und/oder Tabs)

Besteht da eine Möglichkeit die Ausgabe z.B. wie im Wiki (http://en.wikipedia.org/wiki/JSON#Data_types.2C_syntax_and_example) zu erzeugen?
Analog zu wiki sähe meine Ausgabe so aus:


{"firstName":"John","lastName": "Smith","address": {"streetAddress":"21 2nd Street","city":"New York","state": "NY","postalCode": 10021},phoneNumbers":["212 555-1234","646 555-4567"]}

Möchte aber folgendes:

{
"firstName": "John",
"lastName": "Smith",
"address": {
"streetAddress": "21 2nd Street",
"city": "New York",
"state": "NY",
"postalCode": 10021
},
"phoneNumbers": [
"212 555-1234",
"646 555-4567"
]
}


Grüße,
derJan

BLUESCREEN3D
07-12-2008, 13:44
Eigentlich sollte es dir ja egal sein, da die Ausgabe nur von Programmen gelesen wird.

Wenn du aber zu Debug-Zwecken eine andere Formatierung haben willst, musst du das wohl selbst machen. Z.B. mit einer Funktion, die den String Zeichen für Zeichen durchgeht und dabei einen neuen String zusammenstellt, in dem Zeilenumbrüche und Einrückung drin sind.

undefined
07-12-2008, 16:23
Verwende das <pre> tag für die Ausgabe.


var_dump( "<pre>", json_encode( $string ), "</pre>" );

Ka55i0peia
07-12-2008, 22:49
@undefined:

?Meintest du:

var_dump( "<pre>" . json_encode( $string ) . "</pre>" );

Mhhh,
hat keinen wirklichen Effekt.
------------------

Eigentlich sollte es dir ja egal sein, da die Ausgabe nur von Programmen gelesen wird.
Stimmt auch nu wieder...

Gute Alternative:
Das Objekt was übertragen werden soll mit

print_r()

sich ausgeben lassen.


Danke tropsdem!
Grüße.

undefined
08-12-2008, 16:46
@undefined:

?Meintest du:

var_dump( "<pre>", json_encode( $string ), "</pre>" );

Mhhh,
hat keinen wirklichen Effekt.
------------------

Stimmt auch nu wieder...

Gute Alternative:
Das Objekt was übertragen werden soll mit

print_r()

sich ausgeben lassen.


Danke tropsdem!
Grüße.
Wenn du das ganze in ein Variable Speichern willst dann siehe ob_*


ob_start();
var_dump( "<pre>" . json_encode( $string ) . "</pre>" );
$buffer = ob_get_contents();
ob_and_clean();
echo $buffer;

Das alles wird dir aber auch nicht viel nützen weil JavaScript je nach Browser Probleme mit den Zeilen Umbrüchen bekommt.

BLUESCREEN3D
09-12-2008, 12:41
Verwende das <pre> tag für die Ausgabe.


var_dump( "<pre>", json_encode( $string ), "</pre>" );


Die Ausgabe von json_encode() enthält keine Zeilenwechsel usw. Deshalb kann man da auch nichts sichtbar machen.

undefined
09-12-2008, 17:05
Dann dürfte ja seit Jahren mein Debugger nicht funktionieren ;)