微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何减少此 JSON 记录的大小?

如何解决如何减少此 JSON 记录的大小?

我正在努力减少我的数据库记录的大小。每条记录平均约为 5Kb,其中 97% 被单个数组属性使用。

这个数组描述了图像上的对象及其边界框,描述为一系列点:

[
    {
      "s": 0,"e": 6,"w": "Ihandle","b": [
        { "x": 0.08816705336426914,"y": 0.1531684174855981 },{ "x": 0.2523201856148492,"y": 0.15249068112504235 },"y": 0.17926126736699424 },{ "x": 0.08816705336426914,"y": 0.17993900372754998 }
      ]
    },{
      "s": 8,"e": 16,"w": "financial","b": [
        { "x": 0.08584686774941995,"y": 0.1762114537444934 },{ "x": 0.25696055684454755,"y": 0.2016265672653338 },{ "x": 0.08584686774941995,"y": 0.2016265672653338 }
      ]
    },{
      "s": 18,"e": 29,"w": "transactions","b": [
        { "x": 0.016241299303944315,"y": 0.20060996272450016 },{ "x": 0.25928074245939675,"y": 0.19959335818366655 },"y": 0.22636394442561844 },{ "x": 0.016821345707656612,"y": 0.22738054896645205 }
      ]
    },...
]

关于这些要点:

  • 总是正好 4 分
  • 点并不总是彼此平行
  • 不需要超过 1/1000 的精度

我想知道,有什么方法可以减少有效载荷的大小吗? (最终目标是在像 Algolia 这样的全文搜索服务中索引这些记录)

解决方法

  • 您可以缩小 JSON,这样可以节省一点空间。您仍然可以以格式化的方式漂亮地打印它。
  • 如果您不需要完整的精度,您可以删除一些数字并将数字缩短为“0.016821”之类的内容
  • 边界框可以这样表达:Point(x,y) + Width + Height。那将是 4 个数字而不是 8 个!

编辑:那些坐标呢?数字看起来像是代表屏幕宽度和高度的一小部分(就像画布一样)。当然,您可以降低精度,但如果您的分辨率是固定的,您可以使用整数。与“0.016821345707656612,0.22738054896645205”相比,“1024,800”的字符要少得多。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?