首頁 >web前端 >js教程 >json檔案過大怎麼縮小

json檔案過大怎麼縮小

(*-*)浩
(*-*)浩原創
2019-05-18 20:05:027152瀏覽

json檔案縮小的實作方法:1、最佳化資料的結構,將檔案所需儲存的資料量降低;2、不要讓json中文轉碼;3、採用壓縮的演算法,現在常見的json壓縮演算法有“CJSON”與“HPack”。

json檔案過大怎麼縮小

在前端與後端做互動的時候,有的時候為了減少網路請求,很多時候都會將修改頻率極低產生本地化檔案直接操作,例如地址選擇的數據,現在很多平台都是採用將這樣的操作。

不過對於一些少量資料的,這是一件非常簡單的事情,但是當遇到大量資料的時候,這個就明顯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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

相關文章

看更多