网站首页文章详情

php JSON数据格式化(美化)的方法

发布时间:2019-07-11 10:49编辑:胜男

<p>一、使用 json_encode 输出</p><pre class="brush:php;toolbar:false">&lt;?php header(&#39;content-type:application/json;charset=utf8&#39;); $arr&nbsp;=&nbsp;array( &nbsp;&nbsp;&nbsp;&nbsp;&#39;status&#39;&nbsp;=&gt;&nbsp;true, &nbsp;&nbsp;&nbsp;&nbsp;&#39;errMsg&#39;&nbsp;=&gt;&nbsp;&#39;&#39;, &nbsp;&nbsp;&nbsp;&nbsp;&#39;member&#39;&nbsp;=&gt;array( &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;array( &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;name&#39;&nbsp;=&gt;&nbsp;&#39;李&#39;, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;gender&#39;&nbsp;=&gt;&nbsp;&#39;男&#39; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;), &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;array( &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;name&#39;&nbsp;=&gt;&nbsp;&#39;赵&#39;, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;gender&#39;&nbsp;=&gt;&nbsp;&#39;女&#39; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;) &nbsp;&nbsp;&nbsp;&nbsp;) ); &nbsp; echo&nbsp;json_encode($arr); ?&gt;</pre><p>输出:</p><pre class="brush:php;toolbar:false">{&quot;status&quot;:true,&quot;errMsg&quot;:&quot;&quot;,&quot;member&quot;:[{&quot;name&quot;:&quot;\u674e&quot;,&quot;gender&quot;:&quot;\u7537&quot;},{&quot;name&quot;:&quot;\u8d75&quot;,&quot;gender&quot;:&quot;\u5973&quot;}]}</pre><p>二、使用 jsonFormat 输出</p><pre class="brush:php;toolbar:false">&lt;?php &nbsp; /**&nbsp;Json数据格式化 *&nbsp;@param&nbsp;&nbsp;Mixed&nbsp;&nbsp;$data&nbsp;&nbsp;&nbsp;数据 *&nbsp;@param&nbsp;&nbsp;String&nbsp;$indent&nbsp;缩进字符,默认4个空格 *&nbsp;@return&nbsp;JSON */ function&nbsp;jsonFormat($data,&nbsp;$indent=null){ &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;对数组中每个元素递归进行urlencode操作,保护中文字符 &nbsp;&nbsp;&nbsp;&nbsp;array_walk_recursive($data,&nbsp;&#39;jsonFormatProtect&#39;); &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;json&nbsp;encode &nbsp;&nbsp;&nbsp;&nbsp;$data&nbsp;=&nbsp;json_encode($data); &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;将urlencode的内容进行urldecode &nbsp;&nbsp;&nbsp;&nbsp;$data&nbsp;=&nbsp;urldecode($data); &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;缩进处理 &nbsp;&nbsp;&nbsp;&nbsp;$ret&nbsp;=&nbsp;&#39;&#39;; &nbsp;&nbsp;&nbsp;&nbsp;$pos&nbsp;=&nbsp;0; &nbsp;&nbsp;&nbsp;&nbsp;$length&nbsp;=&nbsp;strlen($data); &nbsp;&nbsp;&nbsp;&nbsp;$indent&nbsp;=&nbsp;isset($indent)?&nbsp;$indent&nbsp;:&nbsp;&#39;&nbsp;&nbsp;&nbsp;&nbsp;&#39;; &nbsp;&nbsp;&nbsp;&nbsp;$newline&nbsp;=&nbsp;&quot;\n&quot;; &nbsp;&nbsp;&nbsp;&nbsp;$prevchar&nbsp;=&nbsp;&#39;&#39;; &nbsp;&nbsp;&nbsp;&nbsp;$outofquotes&nbsp;=&nbsp;true; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;for($i=0;&nbsp;$i&lt;=$length;&nbsp;$i++){ &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$char&nbsp;=&nbsp;substr($data,&nbsp;$i,&nbsp;1); &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($char==&#39;&quot;&#39;&nbsp;&amp;&amp;&nbsp;$prevchar!=&#39;\\&#39;){ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$outofquotes&nbsp;=&nbsp;!$outofquotes; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}elseif(($char==&#39;}&#39;&nbsp;||&nbsp;$char==&#39;]&#39;)&nbsp;&amp;&amp;&nbsp;$outofquotes){ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$ret&nbsp;.=&nbsp;$newline; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$pos&nbsp;--; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for($j=0;&nbsp;$j&lt;$pos;&nbsp;$j++){ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$ret&nbsp;.=&nbsp;$indent; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$ret&nbsp;.=&nbsp;$char; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(($char==&#39;,&#39;&nbsp;||&nbsp;$char==&#39;{&#39;&nbsp;||&nbsp;$char==&#39;[&#39;)&nbsp;&amp;&amp;&nbsp;$outofquotes){ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$ret&nbsp;.=&nbsp;$newline; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($char==&#39;{&#39;&nbsp;||&nbsp;$char==&#39;[&#39;){ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$pos&nbsp;++; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for($j=0;&nbsp;$j&lt;$pos;&nbsp;$j++){ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$ret&nbsp;.=&nbsp;$indent; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$prevchar&nbsp;=&nbsp;$char; &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;$ret; } &nbsp; /**&nbsp;将数组元素进行urlencode *&nbsp;@param&nbsp;String&nbsp;$val */ function&nbsp;jsonFormatProtect(&amp;$val){ &nbsp;&nbsp;&nbsp;&nbsp;if($val!==true&nbsp;&amp;&amp;&nbsp;$val!==false&nbsp;&amp;&amp;&nbsp;$val!==null){ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$val&nbsp;=&nbsp;urlencode($val); &nbsp;&nbsp;&nbsp;&nbsp;} } &nbsp; header(&#39;content-type:application/json;charset=utf8&#39;); &nbsp; $arr&nbsp;=&nbsp;array( &nbsp;&nbsp;&nbsp;&nbsp;&#39;status&#39;&nbsp;=&gt;&nbsp;true, &nbsp;&nbsp;&nbsp;&nbsp;&#39;errMsg&#39;&nbsp;=&gt;&nbsp;&#39;&#39;, &nbsp;&nbsp;&nbsp;&nbsp;&#39;member&#39;&nbsp;=&gt;array( &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;array( &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;name&#39;&nbsp;=&gt;&nbsp;&#39;李&#39;, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;gender&#39;&nbsp;=&gt;&nbsp;&#39;男&#39; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;), &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;array( &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;name&#39;&nbsp;=&gt;&nbsp;&#39;赵&#39;, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;gender&#39;&nbsp;=&gt;&nbsp;&#39;女&#39; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;) &nbsp;&nbsp;&nbsp;&nbsp;) ); &nbsp; echo&nbsp;jsonFormat($arr); &nbsp; ?&gt;</pre><p>输出:</p><pre class="brush:php;toolbar:false">{ &nbsp;&nbsp;&nbsp;&nbsp;&quot;status&quot;:true, &nbsp;&nbsp;&nbsp;&nbsp;&quot;errMsg&quot;:&quot;&quot;, &nbsp;&nbsp;&nbsp;&nbsp;&quot;member&quot;:[ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;name&quot;:&quot;李&quot;, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;gender&quot;:&quot;男&quot; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;name&quot;:&quot;赵&quot;, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;gender&quot;:&quot;女&quot; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;] }</pre><p>三、<span style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; font-weight: 700; overflow-wrap: break-word; color: rgb(77, 77, 77); font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; background-color: rgb(255, 255, 255);"><span style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; overflow-wrap: break-word; font-size: 14px;"><span style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; overflow-wrap: break-word; color: rgb(255, 0, 0);">php5.4&nbsp;</span>以后,json_encode增加了<span style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; overflow-wrap: break-word; color: rgb(255, 0, 0);">JSON_UNESCAPED_UNICODE</span>&nbsp;,&nbsp;<span style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; overflow-wrap: break-word; color: rgb(255, 0, 0);">JSON_PRETTY_PRINT</span>&nbsp;等几个常量参数。使显示中文与格式化更方便。</span></span></p><pre class="brush:php;toolbar:false">&lt;?php header(&#39;content-type:application/json;charset=utf8&#39;);&nbsp;&nbsp;&nbsp; $arr&nbsp;=&nbsp;array(&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&#39;status&#39;&nbsp;=&gt;&nbsp;true,&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&#39;errMsg&#39;&nbsp;=&gt;&nbsp;&#39;&#39;,&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&#39;member&#39;&nbsp;=&gt;array(&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;array(&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;name&#39;&nbsp;=&gt;&nbsp;&#39;李&#39;,&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;gender&#39;&nbsp;=&gt;&nbsp;&#39;男&#39;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;),&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;array(&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;name&#39;&nbsp;=&gt;&nbsp;&#39;赵&#39;,&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;gender&#39;&nbsp;=&gt;&nbsp;&#39;女&#39;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;&nbsp; ); echo&nbsp;json_encode($arr,&nbsp;JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT);</pre><p><span style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; font-weight: 700; overflow-wrap: break-word; color: rgb(77, 77, 77); font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; background-color: rgb(255, 255, 255);"><span style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; overflow-wrap: break-word; font-size: 14px;"></span></span>输出:</p><pre class="brush:php;toolbar:false">{ &nbsp;&nbsp;&nbsp;&nbsp;&quot;status&quot;:&nbsp;true, &nbsp;&nbsp;&nbsp;&nbsp;&quot;errMsg&quot;:&nbsp;&quot;&quot;, &nbsp;&nbsp;&nbsp;&nbsp;&quot;member&quot;:&nbsp;[ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;name&quot;:&nbsp;&quot;李&quot;, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;gender&quot;:&nbsp;&quot;男&quot; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;name&quot;:&nbsp;&quot;赵&quot;, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;gender&quot;:&nbsp;&quot;女&quot; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;] }</pre><p><br/></p><p><br/></p><p><br/></p><p><br/></p><p><br/></p><p><br/></p><p><br/></p><p><br/></p><p><br/></p><p><br/></p><p><br/></p><p><br/></p><p><br/></p>