这是别人家的:

这是我家的:

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