Читаемый человеком JSON: он же Добавляет пробелы и разрывы в дамп json


Есть ли где-нибудь "простой" скрипт, который возьмет данные json и отформатирует их, чтобы сделать более удобочитаемыми?

Например:

// $response is a json encoded string.
var_dump($response);

Приведенное выше выводит все в одной строке. Я бы хотел, чтобы в нем были отступы и интервалы, чтобы его было легче читать.

Author: kylex, 0000-00-00

6 answers

json_encode($response, JSON_PRETTY_PRINT);

Сейчас 2017 год, и я думаю, что это должно быть ответом для всех, кто работает с современной версией PHP.

Обратите внимание, что существует множество вариантов кодирования строки JSON по вашему вкусу. Из php.net : JSON_HEX_QUOT, JSON_HEX_TAG, JSON_HEX_AMP, JSON_HEX_APOS, JSON_NUMERIC_CHECK, JSON_PRETTY_PRINT, JSON_UNESCAPED_SLASHES, JSON_FORCE_OBJECT, JSON_PRESERVE_ZERO_FRACTION, JSON_UNESCAPED_UNICODE, JSON_PARTIAL_OUTPUT_ON_ERROR

 4
Author: Matthew Marichiba, 2017-01-16 19:14:05

Обратите внимание, что var_dump и его двоюродный брат-терсер var_export выполните печать новых строк.

Имейте в виду, что новые строки по умолчанию не отображаются в HTML-документе. В контексте HTML вместо этого вам нужно следующее:

echo '<div style="font-family: monospace; white-space:pre;">';
echo htmlspecialchars(var_export($response));
echo '</div>';

В php 5.4+ вы можете просто использовать PRETTY_PRINT флаг json_encode:

echo json_encode($response, JSON_PRETTY_PRINT);

Опять же, в контексте HTML вам придется обернуть его, как описано выше.

 21
Author: phihag, 2011-09-12 20:45:46

Вставьте его в JSONLint.com и нажмите кнопку проверить.

 12
Author: AlienWebguy, 2011-09-12 20:42:37

Была аналогичная проблема в том, что я размещал сериализованный объект javascript в php-скрипт и хотел сохранить его на сервере в удобочитаемом формате.

Нашел этот пост на webdeveloper.com форум и немного изменил код, чтобы он соответствовал моим собственным ощущениям (для этого требуется строка в кодировке json):

function jsonToReadable($json){
    $tc = 0;        //tab count
    $r = '';        //result
    $q = false;     //quotes
    $t = "\t";      //tab
    $nl = "\n";     //new line

    for($i=0;$i<strlen($json);$i++){
        $c = $json[$i];
        if($c=='"' && $json[$i-1]!='\\') $q = !$q;
        if($q){
            $r .= $c;
            continue;
        }
        switch($c){
            case '{':
            case '[':
                $r .= $c . $nl . str_repeat($t, ++$tc);
                break;
            case '}':
            case ']':
                $r .= $nl . str_repeat($t, --$tc) . $c;
                break;
            case ',':
                $r .= $c;
                if($json[$i+1]!='{' && $json[$i+1]!='[') $r .= $nl . str_repeat($t, $tc);
                break;
            case ':':
                $r .= $c . ' ';
                break;
            default:
                $r .= $c;
        }
    }
    return $r;
}

Передача

{"object":{"array":["one","two"],"sub-object":{"one":"string","two":2}}}

Возвращает

{
    "object": {
        "array": [
            "one",
            "two"
        ],
        "sub-object": {
            "one": "string",
            "two": 2
        }
    }
}
 12
Author: som, 2012-04-17 00:31:14
echo '<pre>';
print_r(json_decode($response));
echo '</pre>';

Слишком просто?

 2
Author: Makita, 2012-07-24 13:52:20
 0
Author: ,