programing

JSON을 프로그램적으로 아름답게 하려면 어떻게 해야 하나요?

muds 2023. 4. 1. 10:06
반응형

JSON을 프로그램적으로 아름답게 하려면 어떻게 해야 하나요?

당신은 이것이 이 질문의 중복이라고 말할 수 있지만, 원래의 질문에는 대답하지 않았습니다.질문의 중요한 부분은 다음과 같습니다.programmatically?

php 함수가 있나요?토종인가요, 집에서 만든 건가요?

json_flag()에는 플래그가 있습니다.JSON_PRETTY_PRINT

echo json_encode($data, JSON_PRETTY_PRINT);

지금 같은 질문을 하고 있어요.하지만 당신도 알다시피, 나는 php < 5.4를 가지고 있다.Zend Framework는 Zend_Json::prettyPrint()를 가지고 있다.아주 잘 작동한다.

여러 가지 깊이를 지원하는 비파괴 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;

}   

이 간단한 트릭으로 충분했습니다.다른 라이브러리나 기능은 필요 없었습니다.

$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 code에 한 단계 더 깊게 들어가는 것에 한하여 도움이 되었으면 합니다.

명령줄 사용의 경우 js beautifier를 사용할 수 있습니다.외부 사이트와 데이터를 공유할 필요가 없습니다.

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

언급URL : https://stackoverflow.com/questions/6672656/how-can-i-beautify-json-programmatically

반응형