json是一种非常简单、易读的数据结构。通常我们在做开发时,会选取json作为数据传输格式。同时为了提升性能、降低带宽,我们一般会对json数据进行压缩。今天我们就来谈谈各种压缩方法。

1、常规压缩:

默认的json数据是带有换行的,所以最简单的压缩方法是将json中的回车换行去掉,压缩成一行字符串。

测试:找了一个大的json字符串,原始大小为1.1m,去掉回车换行压缩成一行后,大小变为了360k。

在线压缩工具: https://www.bejson.com/

其次,我们还可以将json中的key变短,设置可以是无意义的符号(只要我们规定好含义即可),这样也能减少json大小。

2、使用gzip、deflate算法压缩:

json本身就是一个文本信息,所以我们可以使用gzip、deflate等算法对其进行压缩,它们都是使用哈弗慢编码的一个无损数据压缩算法,对文本内容压缩的压缩比很高,基本在80%以上。大多数浏览器也都是使用这两种方式对http协议中的响应实体进行压缩。

这里不过多举例子,有兴趣的同同学可以自行尝试。

3、CJSON和HPack压缩算法:

这两种都是针对json数据结构压缩的算法。其主要思路都是将原始json数据抽离成 Template 与 Value,节省掉重复的 "Key 值"。1)cjson压缩:

例如,一个原始json:

"x": 100, "y": 100 "x": 100, "y": 100, "width": 200, "height": 150

使用cjson压缩后:

"templates": [ [0,"x","y"], [1,"width","height"] "values": [ "values": [1,100,100 ] "values": [2,100,100,200,150 ]

2)hpack压缩:

hpack是一个无损、跨语言、注重性能的数据集压缩程序。它能够将用于表示泛型同构集合的字符数减少70%。此算法提供了多个级别的压缩(从0到4)。级别0压缩通过从结构中删除键(属性名)来执行最基本的压缩,该结构在索引0上创建一个具有每个属性名的头。下一个级别允许通过假设存在重复的条目来进一步减小JSON的大小。
原始json:

name : "Andrea",   age : 31,   gender : "Male",   skilled : true   name : "Eva",   age : 27,   gender : "Female",   skilled : true   name : "Daniele",   age : 26,   gender : "Male",   skilled: false [ "name","age","gender","skilled"], ["Andrea",31,"Male", true], [ "Eva", 27,"Female",true], ["Daniele",26,"Male",false]

结论:
两种方法都是主要讲json 的 键抽出来统一建成索引,只是最后的格式不同,HPack 简化后的格式比CJSON 少了许多字符,所以HPack 的压缩效率比较高, 如果 JSON 内容太少, CJSON的资料可能反而会比较多。

https://blog.csdn.net/ZYC88888/article/details/104697362

json是一种非常简单、易读的数据结构。通常我们在做开发时,会选取json作为数据传输格式。同时为了提升性能、降低带宽,我们一般会对json数据进行压缩。今天我们就来谈谈各种压缩方法。1、常规压缩:默认的json数据是带有换行的,所以最简单的压缩方法是将json中的回车换行去掉,压缩成一行字符串。测试:找了一个大的json字符串,原始大小为1.1m,去掉回车换行压缩成一行后,大小变为了360k。在线压缩工具:https://www.bejson.com/其次,我们还可以将json中的ke
public static String encodePolygon(List coordinates, int[] encodeOffsets){ StringBuilder result = new StringBuilder(""); int prevX = encodeOffsets[0]; int prevY = encodeOffsets[1]; for (int i = 0; i < coordinates.size(); i++) { json pack是一个JavaScript程序,用于打包和解 压缩 JSON 数据。 如果数据具有递归结构(例如或 ,则可以 压缩 到原始大小的55%。 该库可在Node.js和浏览器中使用(缺少支持的旧版浏览器将需要使用 )。 // big JSON var json = { ... } // pack the big JSON var packed = json pack . pack ( json ) ; // do stuff... // And then unpack the packed var json = json pack . unpack ( packed ) ; json pack可以通过 , 或安装,也可以直接。 通过cpm: $ cpm install json pack 通过volo: $ volo a
无论使用何种编程语言, json 格式的数据已被广泛应用,不论是数据的传输还是存储,在很多应用场景下,你可能想进一步地 压缩 JSON 字符串的长度,以提升传输效率,如果你使用的是nosql数据库,你可能想进一步的 压缩 json 字符串的长度来节省你的存储空间,接下来,我将介绍一下目前最常用的 json 数据压缩 技术(C JSON 和HPack)的实现。 一、C JSON C JSON 压缩 算法, 主要是将资料抽离成...
最近公司开发一款app(原生安卓的),由于客户需要在app上展示3D效果图,但是客户的源文件是setp格式的,而且文件很大。鉴于文件解析等一系列考虑,最终打算使用服务器将源文件解析成 json 或者obj格式,然后传输到app上打开预览,最终选择的是使用python将step解析成 json ,本地测试一切正常,上线发现问题来了,解析出来的 json 文件比源文件非常大,通常都是好几十MB,所以就考虑 压缩 传输,然后在客户端进行解压渲染。 各种 压缩 方式测试 7z+zip或者7z+7z 压缩 方案:采用7z 压缩 后,再使
程序员的成长之路互联网/程序员/技术/资料共享关注阅读本文大概需要 6分钟。来自:https://blog.csdn.net/weixin_43441509/article/details/1238166031. 业务背景是这样的,业务背景是公司的内部系统有一个广告保存接口,需要 ADX 那边将投放的广告数据进行保存供后续使用。广告数据大概长这样:{ "adName":"",
java端:返回类型非字符接口调用StringUtils#base64AndCompress Json 进行编码 压缩 ,返回类型为字符接口调用StringUtils#base64Andcompress js 端:引入 压缩 包中的js文件 ,调用deBase64AndUncompress进行解压解码
首先,在互联网上搜索并找到陕西省水利厅官网的数据下载页面。在该页面中,可以找到与“河流”相关的数据下载链接。 点击该链接,浏览器将下载一个包含 JSON 格式的河流数据的 压缩 文件。解 压缩 该文件后,将得到一组以 JSON 格式编写的陕西河流数据。 这些数据包括每个河流的名称、流域面积、长度、流量等详细信息。可以通过对这些数据的分析和处理来更好地了解陕西省的水文情况,以及在河流治理等方面提供重要的支持。 在使用这些数据时,需要注意数据的更新和使用权限问题,并遵守数据使用规范。同时,在数据分析过程中要注重对数据的质量和准确性进行评估,确保得出的结论具有科学性和可靠性。 ### 回答2: 陕西省是我国西北地区的一个省份,是黄河和长江两大流域的交汇地带。因此,该地区河流众多,水系复杂,为了更好地了解和研究该地区的水文情况,就需要获取相关的河流数据。 河流数据是指记录河流水文情况的各项指标数据,如水位、流量、水质等。为了方便获取和使用这些数据,我们可以将它们以 json 格式进行下载。 json 是一种轻量级的数据交换格式,易于阅读和编写,广泛应用于各种数据交换场景。因此,将陕西省的河流数据以 json 格式进行下载,不仅可以方便后续的数据分析和研究,同时也符合数据共享和可访问性的要求。 具体而言,我们可以通过互联网检索到一些网站或平台,提供陕西省河流数据的 json 格式下载服务。例如中国地理信息网、中国水利网等,将提供河流数据的 json 格式下载链接,用户只需点击链接即可下载相关数据。此外,也有一些第三方开发者或团队,提供自行抓取整理的陕西省河流数据,以 json 格式进行发布和下载,可以通过github等网站进行获取。 总之,陕西省河流数据以 json 格式进行下载,既方便了数据获取和应用,又便于数据共享和开放,更加利于科学研究和信息化建设的进行。