热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

json文件过大怎么缩小

一.优化数据的结构,想要文件体积减小,优先考虑的应该是如何将文件所需要存储的数据量降低。二.不要让json中文转码。三.采用压缩的算法,现在常见的json压缩算法有CJSON与HPack。
在前端与后端做交互的时候,有的时候为了减少网络请求,很多时候都会将修改频次极低生成本地化文件进行直接操作,例如地址选择的数据,现在很多平台都是采用将这样的操作。

不过对于一些少量数据的,这是一件非常简单的事情,但是当遇到大量数据的时候,这个就明显GG,今天我就遇到了一个,如果按照前端既定的结构生成json文件,文件是4.2M,当时的我简直满脸黑线,后面找到了方法,将数据降低到0.7M,这大概是我现在的极限了,要是还想小,就只能改结构或者跟前端玩命去了。

下面讲一下“压缩的具体方式”,php为例

一.优化数据的结构

想要文件体积减小,优先考虑的应该是如何将文件所需要存储的数据量降低。需要做的是讨论最小可行的一个结构,将不需要的字段去除,将其中单词,代码进行缩减。

二.不要让json中文转码

在调用PHP的json_encode()函数的时候,会将中文进行编码Unicode,在正常情况下来看,这个可能是除了使生成的json串可读性降低了而已,不过在这种特殊情况下,也不能忽略由于编码,而造成的额外大量的体积开销。不进行编码的话,会让文件缩小很多。

本次讲解,用以下函数就够。

function jsonEncode($da)
{
    return urldecode(json_encode(arrUrlencode($da)));
}
function arrUrlencode($da)
{
    if(is_array($da)){
        foreach($da as $k => $v) {
            if(is_array($v)){
                $da[$k] = arrUrlencode($v);
            }elseif(is_string($v) && !is_numeric($v)) {
                $da[$k] = urlencode($v);
            }
        }
    }
    return $da;
}

三.采用压缩的算法

现在常见的json压缩算法有CJSON与HPack,其原理都是将key和value进行抽离,节省掉部分的重复的key值造成的空间消耗。此次中我用到的是CJSON算法。

HPack的基本是将key值抽离出来,被提取前和提取后的数据示例如下,看起来更像是表格化了,是不是很简单:

# 提取前[
  {name: "Lam", age: 18, gender: "男", hobit: "看书"},
  {name: "Lee" , age: 20, gender: "女", hobit: "跳舞"},
]# 压缩后[
  ["name", "age", "gender", "hobit"],
  ["Lam", 18, "男", "看书"],
  ["Lee", 20, "女", "跳舞"],
]

以上就是json文件过大怎么缩小的详细内容,更多请关注 第一PHP社区 其它相关文章!


推荐阅读
  • 本文介绍了前端人员必须知道的三个问题,即前端都做哪些事、前端都需要哪些技术,以及前端的发展阶段。初级阶段包括HTML、CSS、JavaScript和jQuery的基础知识。进阶阶段涵盖了面向对象编程、响应式设计、Ajax、HTML5等新兴技术。高级阶段包括架构基础、模块化开发、预编译和前沿规范等内容。此外,还介绍了一些后端服务,如Node.js。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • 本文介绍了游戏开发中的人工智能技术,包括定性行为和非定性行为的分类。定性行为是指特定且可预测的行为,而非定性行为则具有一定程度的不确定性。其中,追逐算法是定性行为的具体实例。 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • 本文详细解析了JavaScript中相称性推断的知识点,包括严厉相称和宽松相称的区别,以及范例转换的规则。针对不同类型的范例值,如差别范例值、统一类的原始范例值和统一类的复合范例值,都给出了具体的比较方法。对于宽松相称的情况,也解释了原始范例值和对象之间的比较规则。通过本文的学习,读者可以更好地理解JavaScript中相称性推断的概念和应用。 ... [详细]
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • 本文介绍了闭包的定义和运转机制,重点解释了闭包如何能够接触外部函数的作用域中的变量。通过词法作用域的查找规则,闭包可以访问外部函数的作用域。同时还提到了闭包的作用和影响。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 学习SLAM的女生,很酷
    本文介绍了学习SLAM的女生的故事,她们选择SLAM作为研究方向,面临各种学习挑战,但坚持不懈,最终获得成功。文章鼓励未来想走科研道路的女生勇敢追求自己的梦想,同时提到了一位正在英国攻读硕士学位的女生与SLAM结缘的经历。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
author-avatar
安小辰
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有