使用 HPack 與 CJSON 演算法來壓縮 JSON

JSON 的壓縮演算法, 目前有 CJSON 和 HPack 兩種, 都是透過結構的改變, 來將容量壓小, 所以 Client 端寫法還是得要改寫. (不同於 gzip 等壓縮演算法)

HPack 與 CJSON 的 Source code

CJSON Compress Algorithm

原始 JSON
  1. [
  2. { // This is a point
  3. "x": 100,
  4. "y": 100
  5. }, { // This is a rectangle
  6. "x": 100,
  7. "y": 100,
  8. "width": 200,
  9. "height": 150
  10. },
  11. {}, // an empty object
  12. ]
使用 CJSON 壓縮的 JSON
  1. {
  2. "templates": [
  3. [0, "x", "y"], [1, "width", "height"]
  4. ],
  5. "values": [
  6. { "values": [ 1, 100, 100 ] },
  7. { "values": [2, 100, 100, 200, 150 ] },
  8. {}
  9. ]
  10. }

HPack Compress Algorithm

原始 JSON
  1. [{
  2. name : "Andrea",
  3. age : 31,
  4. gender : "Male",
  5. skilled : true
  6. }, {
  7. name : "Eva",
  8. age : 27,
  9. gender : "Female",
  10. skilled : true
  11. }, {
  12. name : "Daniele",
  13. age : 26,
  14. gender : "Male",
  15. skilled : false
  16. }]
使用 HPack 壓縮的 JSON

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

結論

  • HPack 的壓縮效率比較高, 如果 JSON 內容太少, CJSON 的資料可能反而會比較多.

作者: Tsung

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料