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

2 天前
 zzlit

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

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

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

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

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

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

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

要真有让 json 压缩并能还原, 那任何地方不都能用上
zzlit
2 天前
@nzynzynzy 传输方便,存储的话得上服务了吧
COW
2 天前
其实就是想把一个 id 映射到 json 字符串呗,那只要你做了 kv 存储,就能相互转换,至于短链长什么样跟你的 id 生成规则有关
cheng6563
2 天前
先 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
2 天前
@zzlit #14 传输就最多是 minify (去掉空格)就到头了吧,我感觉是这样了。如果 A-->B 传输就这样了。如果能,就精简一下 json 的内容,荣誉的东西不要。
我感觉很多开发时候 json 都是脱裤级别的存在,不要这样,要精简,一次数据太多要翻页。
otakustay
2 天前
先按 UTF8 编码走 gzip (或者其它任意压缩算法)一下,然后再转成 hex (或者其它更高效的表达)?
kzfile
2 天前
其实就是需要按照你的业务特性,设计一种高效的数据编码/解码算法
hoythan
2 天前
@cheng6563 你可真是个人才!

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

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

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

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

© 2021 V2EX