这是别人家的:
这是我家的:
1
slixurd 2016-06-27 10:53:16 +08:00 1
很多 JSON 库都自带 beautify 参数
|
2
justfly 2016-06-27 10:56:49 +08:00 5
说明你的比人家的优化的好
|
3
Ouyangan 2016-06-27 10:57:40 +08:00 1
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 1
看你用什么方式转换成 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 1
显然是一坨好, 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="//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 1
测试时用别人家的,生产时用你家的。
|
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 插件啊骚年
|