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
格式进行下载,既方便了数据获取和应用,又便于数据共享和开放,更加利于科学研究和信息化建设的进行。