2017-01-12 4 views
1

Я пытаюсь довольно печатать JSON в настоящее время на PHP, я смотрел на темы вроде Pretty-Printing JSON with PHP, но это не работает. Я на PHP 7.0.8-0ubuntu0.16.04.3Довольно печать JSON не работает

Код:

<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> 

Выходные:

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

Ввод JSON

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

По какой-то причине варианты JSON_PRETTY_PRINT и JSON_UNESCAPED_SLASHES не на самом деле работа. Почему это? Это из PHP 5.4 и я на PHP 7.

+0

@MaxZoom Только что попробовал и тот же вопрос! – bwfcwalshy

+0

Этот выход выглядит двойным JSON-кодированным. –

ответ

3

$_POST['json_data'] уже является строкой JSON, поэтому вы кодируете что-то, что уже закодировано; это в основном просто избегает всех двойных кавычек внутри строки и обертывает кавычки вокруг результата. Сначала вам нужно его декодировать, а затем закодировать результат с помощью довольно-печатной.

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