2017-01-12 5 views
1

Ich versuche, JSON derzeit in PHP hübsch zu drucken, habe ich die Threads wie Pretty-Printing JSON with PHP dies angesehen, aber es funktioniert nicht. Ich bin auf PHP 7.0.8-0ubuntu0.16.04.3Pretty Druck JSON funktioniert nicht

Code:

<form method="POST"> 
    <textarea name="json_data" id="json_data"> 
     <?php 
      if(isset($_POST['json_data'])){ 
       echo json_encode($_POST['json_data'], JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); 
      } 
     ?> 
    </textarea> 

    <input type="submit" value="Pretty Print JSON"> 
</form> 

Ausgang:

"[{\"title\":\"The Chainsmokers - Closer (Lyric) ft. Halsey\",\"length\":262000,\"id\":\"PT2_F-1esPk\",\"requester\":\"158310004187725824\",\"guildId\":\"226785954537406464\"}]" 

Eingang JSON

[{"title":"The Chainsmokers - Closer (Lyric) ft. Halsey","length":262000,"id":"PT2_F-1esPk","requester":"158310004187725824","guildId":"226785954537406464"}] 

Aus irgendeinem Grund die Optionen JSON_PRETTY_PRINT und JSON_UNESCAPED_SLASHES funktionieren nicht wirklich. Warum das? Diese sind von PHP 5.4 und ich bin auf PHP 7.

+0

@MaxZoom Probieren Sie es aus und das gleiche Problem! – bwfcwalshy

+0

Diese Ausgabe sieht doppelt JSON-codiert aus. –

Antwort

3

$_POST['json_data'] ist bereits eine JSON-Zeichenfolge, also codieren Sie etwas, das bereits codiert ist; Im Prinzip werden nur alle doppelten Anführungszeichen in der Zeichenfolge entfernt, und das Ergebnis wird in Anführungszeichen eingeschlossen. Sie müssen es zuerst dekodieren und dann das Ergebnis mit hübschem Drucken kodieren.

if (isset($_POST['json_data'])) { 
    $data = json_decode($_POST['json_data']); 
    echo json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); 
}