Pretty Print JSON


Hits: 3566  

We can use function json_print() to explore JSON data, since JSON has no spacing or indentation. The function json_print() make JSON data to display in the human-readable format.

<?php

function json_print($json) {

    $result      = '';
    $pos         = 0;
    $strLen      = strlen($json);
    $indentStr   = '  ';
    $newLine     = "\n";
    $prevChar    = '';
    $outOfQuotes = true;

    for ($i=0; $i<=$strLen; $i++) {

        // Grab the next character in the string.
        $char = substr($json, $i, 1);

        // Put spaces in front of :
        if ($outOfQuotes && $char == ':' && $prevChar != ' ') {
            $result .= ' ';
        }

        if ($outOfQuotes && $char != ' ' && $prevChar == ':') {
            $result .= ' ';
        }

        // Are we inside a quoted string?
        if ($char == '"' && $prevChar != '\\') {
            $outOfQuotes = !$outOfQuotes;

            // If this character is the end of an element, 
            // output a new line and indent the next line.
        } else if(($char == '}' || $char == ']') && $outOfQuotes) {
            $result .= $newLine;
            $pos --;
            for ($j=0; $j<$pos; $j++) {
                $result .= $indentStr;
            }
        }

        // Add the character to the result string.
        $result .= $char;

        // If the last character was the beginning of an element, 
        // output a new line and indent the next line.
        if (($char == ',' || $char == '{' || $char == '[') && $outOfQuotes) {
            $result .= $newLine;
            if ($char == '{' || $char == '[') {
                $pos ++;
            }

            for ($j = 0; $j < $pos; $j++) {
                $result .= $indentStr;
            }
        }

        $prevChar = $char;
    }

    return $result;
}

// Uses....

//........
//........

echo json_print($json);


?>

Related JSON Function: json_add()

Other Resources:
http://pretty-print.org/
http://chris.photobooks.com/json/default.htm
https://gist.github.com/906036
http://jsonviewer.stack.hu/
http://www.cerny-online.com/cerny.js/demos/json-pretty-printing

Knowledge Base – It is little use to dig a well after the house has caught fire… SAVE knowledge like Money 😉