JSON 字符串如何转换为短链接

44 天前
 zzlit

例如有一串很长的 JSON 字符串 '{"x":5,"y":6}' ,我想转为短链,并且拿到短链的还能反编译为原值。考虑了几个压缩的库发现字符串长度并不会更短,甚至还会更长。

那其实应该是需要先进行把能精简长度的尽量精简,比如 key ,然后再进行一定的规则转为短链而不是单纯的压缩,有大佬能谈一下这个转换的规则吗? JavaScript 库或者算法都可以。

另外我了解现在的短链大部分是有服务端参与存储在数据库里面的,但是有无纯前端的方案呢?

3296 次点击
所在节点    程序员
54 条回复
Goooooos
44 天前
短链接 跟 字符串压缩没事关系吧?
zzlit
44 天前
@Goooooos 对,我本来是往压缩方向想,结果发现错了,根本就不对
b821025551b
44 天前
你在说神马?
shintendo
44 天前
额,你难道认为短链是把长链压缩出来的吗
zzlit
44 天前
@b821025551b 就是比如我想对这个字符串 '{"x":5,"y":6}' 变成 'xxxx', 然后 'xxxx' 还能还原为'{"x":5,"y":6}',长度尽可能短,所以用了短链的概念
zzlit
44 天前
@shintendo 之前是这样想的,后面发现概念错了...
meeop
44 天前
没有

数据可以压缩,但不会有魔法般的将任何信息变成一个固定长度 key 的方法

但是你可以将数据上传任何 cdn ,然后会得到一个固定长度下载链接
xz410236056
44 天前
shintendo
44 天前
如果你这个 JSON 是完全任意内容,而不是固定的 pattern ,或者大量重复的 key 的话,很难想象能怎么压缩。
退一步想想,如果有这么一个稳定无损缩短 JSON 的算法,现在的前后端 ajax 通信为啥不用上呢?要不你看看 gzip 吧
DigitaIOcean
44 天前
@zzlit #6 哈哈哈哈
nzynzynzy
44 天前
传输和存储是两件事,我有点没弄清楚你要传输方便还是要存储到一个地方然后访问?
miaotaizi
44 天前
布隆过滤器?
iorilu
44 天前
压缩是压缩
短链是短链

难道你认为短链可以做到压缩得功能

要真有让 json 压缩并能还原, 那任何地方不都能用上
zzlit
44 天前
@nzynzynzy 传输方便,存储的话得上服务了吧
COW
44 天前
其实就是想把一个 id 映射到 json 字符串呗,那只要你做了 kv 存储,就能相互转换,至于短链长什么样跟你的 id 生成规则有关
cheng6563
44 天前
先 urlencode 下,{"x":5,"y":6 转成 %7B%22x%22%3A5%2C%22y%22%3A6%7D

然后随便做个 url https://example.com/?json=%7B%22x%22%3A5%2C%22y%22%3A6%7D

把这个 url 随便发个微博,把微博生成的短链接复制出来
nzynzynzy
44 天前
@zzlit #14 传输就最多是 minify (去掉空格)就到头了吧,我感觉是这样了。如果 A-->B 传输就这样了。如果能,就精简一下 json 的内容,荣誉的东西不要。
我感觉很多开发时候 json 都是脱裤级别的存在,不要这样,要精简,一次数据太多要翻页。
otakustay
44 天前
先按 UTF8 编码走 gzip (或者其它任意压缩算法)一下,然后再转成 hex (或者其它更高效的表达)?
kzfile
44 天前
其实就是需要按照你的业务特性,设计一种高效的数据编码/解码算法
hoythan
44 天前
@cheng6563 你可真是个人才!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1088759

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX