
这是别人家的:
 
这是我家的:
 
     1   slixurd      2016-06-27 10:53:16 +08:00   很多 JSON 库都自带 beautify 参数   |  
     2   justfly      2016-06-27 10:56:49 +08:00   说明你的比人家的优化的好   |  
     3   Ouyangan      2016-06-27 10:57:40 +08:00   chrome 插件:JSON-handle   |  
     4   chineselittleboy   OP @justfly 人家的好看   |  
     5   abelyao      2016-06-27 11:08:47 +08:00  我觉得 json 应该保持数据本身的纯粹性,如果是我,我会选择你家的那种,至于接收方要怎么美化查看,是另一回事   |  
     6   zenxds      2016-06-27 11:09:48 +08:00  返回就直接格式化好了,比如 JSON.stringify(response, null, 4)   |  
     7   chairuosen      2016-06-27 11:11:06 +08:00  chrome 插件 json formatter   |  
     8   allce231      2016-06-27 11:38:59 +08:00  json 本身就是字符串   |  
     9   SuperMild      2016-06-27 11:43:33 +08:00  数据传输时还是一坨的好,要看内容时各自处理。   |  
     10   ango      2016-06-27 12:04:39 +08:00  header json 声明即可   |  
     11   Infernalzero      2016-06-27 12:08:53 +08:00   看你用什么方式转换成 JSON 返回了  如果用别人造的轮子的话,一般都会提供"features"参数供选择格式,设置成自己喜欢的格式就 OK  |  
     12   cloverstd      2016-06-27 12:19:11 +08:00  一坨多好,可以节省资源,:D  你看到的『序列化』,其实是用空格给填充出来的  |  
     13   heaton_nobu      2016-06-27 12:19:58 +08:00  你的请求头里有 application/json 吗?   |  
     14   akira      2016-06-27 12:24:28 +08:00  生产服上面肯定是用一坨的啦   |  
     15   7timesonenight      2016-06-27 12:24:44 +08:00  仅传输的话,空白字符多,影响性能,占用带宽流量,   |  
     16   slixurd      2016-06-27 12:32:57 +08:00  现在的服务器哪一个不开 gzip ,就一堆空格能有什么影响。   |  
     17   lslqtz      2016-06-27 12:46:06 +08:00  复制空格,然后加进去输出   |  
     18   gimp      2016-06-27 12:49:10 +08:00  数据的传输还是一坨好,查看是另一个问题,可以丢到 http://json.cn/ 上去   |  
     19   incompatible      2016-06-27 13:18:28 +08:00 via iPhone  @slixurd   1. gzip 平白耗 cpu 2. json 数据在进入 gzip 并发给客户端这个环节之前也许已经经过了数个内部 rpc 链路或者经过了数个 IO 传输环节,这些环节会受到影响 3. pretty json 的过程本身也会耗费额外的 cpu 时间 对性能有影响是肯定的  |  
     20   slixurd      2016-06-27 16:00:22 +08:00  @incompatible 嗯,的确是消耗 CPU 的,然而数据体积减小,网络链路传输变快了。  至于内部 RPC ,我想没有什么 RPC 框架是以文本形式传输的,都是压缩后的 binary 。  |  
     21   miaosu      2016-06-27 16:03:17 +08:00  这个无所谓吧。。。我觉得你的更好一些~   |  
     22   pi1ot      2016-06-27 16:06:42 +08:00  你返回的 http head 里的 content-type 不是 json   |  
     23   zencoding      2016-06-27 16:10:28 +08:00  header("Content-Type: application/json;")   |  
     24   gyteng      2016-06-27 16:18:23 +08:00   显然是一坨好, pretty 的话涉及用 tab 还是 space ,会引起圣战的。   |  
     25   BOYPT      2016-06-27 16:26:27 +08:00  一般 jsonnify 函数都有 pretty 开关的,比如 php 的 json_encode($data, JSON_PRETTY_PRINT);  比如 nodejs 的 JSON.stringify(data, null, 4); 在程序看来是等效的(非压缩传输的话会带了比较多空格)  |  
     26   ipconfiger      2016-06-27 16:35:50 +08:00  就一串, 省流量. format 的话到本地了用工具   |  
     27   Vie      2016-06-27 16:42:38 +08:00  <div class="box">  <div class="inner" align="center"> <a href="https://www.wilddog.com/?utm_source=v2ex&utm_medium=banner&utm_cOntent=homepageright&utm_campaign=suzhoucodingcamp" target="_blank"><img src="http://www.v2ex.com//cdn.wilddog.com/images/ads/v2ex/v2ex-500x500-1.jpg" border="0" width="250" height="250" alt="野狗科技"></a> </div> </div>  |  
     29   binux      2016-06-27 16:47:10 +08:00  @incompatible   1. 难道不加 indent 就不开 gzip 了吗? 2. 就算内部不 gzip ,多几个空格能大多少,有多少影响。真在意 protobuf 啊, msgpack 都好过 JSON 。 3. 会增加,但是并不会增加多少。 pretty 不是额外操作,是序列化的内部过程,只是是否在输出 object 序列化前判断下是否加入 indent ,并不会增加多少消耗。 这东西难道不是纯看喜好吗?  |  
     30   jswh      2016-06-27 17:01:48 +08:00  @binux @incompatible   PHP7 的 json 函数解析其中有控制符的 json 的时候会出错,无法正确解析。官方回复是不会支持,因为 json 的标准里面就是没有控制符的。我没有读过标准,不知真假。 这个坑了我很久。  |  
     31   binux      2016-06-27 17:14:15 +08:00  @jswh 什么叫有控制符的 json ? JSON 标准规定:  > All Unicode characters may be placed within the > quotation marks, except for the characters that must be escaped: > quotation mark, reverse solidus, and the control characters (U+0000 > through U+001F). 有控制符的 json 那还叫 json 吗?  |  
     33   binux      2016-06-27 17:20:21 +08:00  @jswh 瞎说  JSON-text = ws value ws Insignificant whitespace is allowed before or after any of the six structural characters. ws = *( %x20 / ; Space %x09 / ; Horizontal tab %x0A / ; Line feed or New line %x0D ) ; Carriage return  |  
     34   zarvin      2016-06-27 17:25:40 +08:00  chrome 的话可以用 web 前端助手 这个插件   |  
     35   Lullaby      2016-06-27 21:34:51 +08:00  jsonview   |  
     37   fhefh      2016-06-27 22:45:16 +08:00    |  
     38   kevinroot      2016-06-27 23:05:34 +08:00  “别人家的”多了一些空格换行,浪费空间。就是应该一坨,解析或者用工具查看就好了。 chrome 有 JSONView   |  
     39   predator      2016-06-27 23:13:16 +08:00  我家开发测试环境带 PRETTY 格式,生产环境不带   |  
     41   Balthild      2016-06-28 01:30:28 +08:00 via Android   测试时用别人家的,生产时用你家的。   |  
     43   vus520      2016-06-28 09:12:10 +08:00  ```php  ~ php -a Interactive shell php > $a = ["a"=>"b", "c"=>["d", "e", "f"]]; php > echo json_encode($a, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES); { "a": "b", "c": [ "d", "e", "f" ] } php > $a = ["a"=>"b", "c"=>["中文也行啊", '引号"也行啊']]; php > echo json_encode($a, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES); { "a": "b", "c": [ "中文也行啊", "引号\"也行啊" ] } php > ```  |  
     44   killerv      2016-06-28 09:16:39 +08:00    |  
     45   wbt      2016-06-28 09:43:02 +08:00  用 chrome 插件啊骚年   |