1
chfight 2019-03-07 19:07:02 +08:00
gzip base64 试一下?
|
2
kiddult 2019-03-07 19:07:37 +08:00
base85? 不过还是用 base64 比较好一些,代码上可读性要好很多
|
3
chinvo 2019-03-07 19:08:31 +08:00
为啥要这么做……
感觉你这个场景应该是下载文件,json 里面提供个链接,然后访问链接获取 binary 不行么 |
4
dapang1221 2019-03-07 19:09:48 +08:00
二进制的都要 1MB,其他编码形式只能比 1MB 多啊,为什么不建一个存储,json 里放路径呢…
|
5
VDimos 2019-03-07 19:16:49 +08:00 via Android
为啥要在 json 放 binary,这个需求好奇怪
|
6
whatsmyip 2019-03-07 19:20:16 +08:00
type(xxx) = bytes
type(xxx.encode()) = str |
7
index90 2019-03-07 19:21:26 +08:00
为什么要用 JSON 来序列化一个二进制文件……
|
8
Cbdy 2019-03-07 19:22:04 +08:00 via Android
base64 编码数据增大了 1/3 (算大幅吗?),其实在大多数场景可以接受吧
如果接受不了,可以再用一些字符,把键盘上的字符都用一边估计可以😄 |
9
rayingecho 2019-03-07 19:29:27 +08:00 2
闻出了 X-Y Problem 的味道: https://coolshell.cn/articles/10804.html
"我想用 X 实现 Y, 请问 X 要怎么实现?" 很多时候这是南辕北辙, 建议直接说出你的最终需求, 也就是 Y 是什么 |
10
xfriday 2019-03-07 19:43:57 +08:00
200 OK
... My-File-Name: test.exe <byte[]> |
11
melonux OP @rayingecho 哈哈,挺有趣。
|
12
moonsn 2019-03-07 19:46:46 +08:00
@rayingecho +1
|
13
melonux OP |
14
ma6254 2019-03-08 05:20:56 +08:00
也就是说,这个接口同时要返回文件附加信息和文件内容,还要是 json,并且要有可读性。
感觉应该把文件信息和文件内容分成两个接口,这样就只需要维护文件信息接口的可读性,而文件内容接口的可读性就不用管。 但是这样又可能会带来同步的问题 |
15
zyp0921 2019-03-08 08:43:01 +08:00
全部转成字符串啊,然后拿到的再把字符串转回去就可以了啊
|
16
farseeraliens 2019-03-08 09:19:26 +08:00 via iPhone
@zyp0921 小白请教一下,请问您指的是 byte string 吗?如果是的话,不还得要求协议支持 byte string 吗? http 支持吗?
|
17
zyp0921 2019-03-08 09:35:20 +08:00
|
18
farseeraliens 2019-03-08 09:58:24 +08:00 via iPhone
@zyp0921 没理解,这样增大一倍不比 base64 增大三分之一还差?
|
19
leonard916 2019-03-08 15:13:05 +08:00 1
我覺得樓主可以考慮 BSON ( http://bsonspec.org/ )
|
20
zyp0921 2019-03-08 15:43:00 +08:00
@farseeraliens 大就大点,没关系- - 要不考虑用 protobuf
|
21
melonux OP @leonard916 嗯,终于意识到 BSON 解决的是个什么问题了
|
22
NoKey 2019-04-28 16:12:16 +08:00
我现在也有个这种需求,json 返回人员信息,但是人员信息太大,所以对信息进行 gzip 压缩,压缩出来的就是 byte,我也在纠结,byte 如何放到 json 里面。
楼上提到的一些方案会增大数据容量的方法不行,gzip 就是为了减少数据大小 byte 转 string,然后 string 又转回 byte,好像有问题 |