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_PRINTJSON_UNESCAPED_SLASHES은 실제로 작동하지 않습니다. 왜 그런가요? PHP 5.4부터 제공되며 PHP 7을 사용합니다.

+0

@MaxZoom 그냥 똑같은 문제를 시도했습니다! – bwfcwalshy

+0

그 출력은 JSON 인코딩 된 이중으로 보입니다. –

답변

3

은 이미 JSON 문자열이므로 이미 인코딩 된 내용을 인코딩합니다. 이것은 기본적으로 문자열 안의 모든 큰 따옴표를 이스케이프 처리하고 결과를 따옴표로 묶습니다. 먼저 디코드 한 다음 예쁜 인쇄로 결과를 인코딩해야합니다.

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