Как я могу украсить JSON программно?

Вы можете сказать, что это дубликат этого вопроса, но исходный вопрос не ответил. Важная часть вопроса: programmatically?

Есть ли какая-либо функция php? Родной или домашнее?

+22
12 июл. '11 в 23:59
источник поделиться
6 ответов

Похоже, это может сработать:

http://recursive-design.com/blog/2008/03/11/format-json-with-php/

результат генезиса:

[[["er",null,null,null,null,500],["e",2,null,null,57]],'45932b7d6d6dc08e']

to

[
  [
    [
      "er",
      null,
      null,
      null,
      null,
      500
    ],
    [
      "e",
      2,
      null,
      null,
      57
    ]
  ],
  '45932b7d6d6dc08e'
] 
+13
13 июл. '11 в 0:04
источник

json_encode() имеет флаг JSON_PRETTY_PRINT

echo json_encode($data, JSON_PRETTY_PRINT);
+89
13 июл. '11 в 0:09
источник

имел тот же вопрос прямо сейчас. Но поскольку у вас также есть php < 5.4. Zend Framework имеет Zend_Json:: prettyPrint(). Очень хорошо работает.

+3
17 авг. '11 в 12:00
источник

Я создал неразрушающий декодер JSON, который поддерживает несколько глубоких уровней.

/**
 * JSON beautifier
 * 
 * @param string    The original JSON string
 * @param   string  Return string
 * @param string    Tab string
 * @return string
 */
function pretty_json($json, $ret= "\n", $ind="\t") {

    $beauty_json = '';
    $quote_state = FALSE;
    $level = 0; 

    $json_length = strlen($json);

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

        $pre = '';
        $suf = '';

        switch ($json[$i])
        {
            case '"':                               
                $quote_state = !$quote_state;                                                           
                break;

            case '[':                                                           
                $level++;               
                break;

            case ']':
                $level--;                   
                $pre = $ret;
                $pre .= str_repeat($ind, $level);       
                break;

            case '{':

                if ($i - 1 >= 0 && $json[$i - 1] != ',')
                {
                    $pre = $ret;
                    $pre .= str_repeat($ind, $level);                       
                }   

                $level++;   
                $suf = $ret;                                                                                                                        
                $suf .= str_repeat($ind, $level);                                                                                                   
                break;

            case ':':
                $suf = ' ';
                break;

            case ',':

                if (!$quote_state)
                {  
                    $suf = $ret;                                                                                                
                    $suf .= str_repeat($ind, $level);
                }
                break;

            case '}':
                $level--;   

            case ']':
                $pre = $ret;
                $pre .= str_repeat($ind, $level);
                break;

        }

        $beauty_json .= $pre.$json[$i].$suf;

    }

    return $beauty_json;

}   
+2
06 апр. '13 в 15:04
источник

Этот простой трюк сделал эту работу для меня, я не хотел никаких дополнительных библиотек или функций:

$json = '{"status":"0","status_translated":"Request successful!","data":"1"}';
$json_beautified = str_replace(array("{", "}", '","'), array("{<br />&nbsp;&nbsp;&nbsp;&nbsp;", "<br />}", '",<br />&nbsp;&nbsp;&nbsp;&nbsp;"'), $json);

И результат будет выглядеть следующим образом:

{
    "status":"0",
    "status_translated":"Request successful!",
    "data":"1"
}

Это только для json-кода, который идет 1 шаг в глубину, я надеюсь, что это поможет.

+2
08 дек. '11 в 17:20
источник

Для использования командной строки вы можете использовать js beautifier. Не нужно делиться своими данными с внешними сайтами.

https://github.com/vivekpathak/tools/blob/master/jb/jb

-1
04 янв. '13 в 16:03
источник

Посмотрите другие вопросы по меткам или Задайте вопрос