使用巨大的 int JSON 数组更快 JSON 反序列化

Faster JSON deserialization with huge int JSON array

我必须反序列化 Android 中的一个 Json 对象,里面有一个巨大的 Int Json 数组。

架构如下:

{ 
   "key1": "value1",
   "key2": "value2",
   "smallObject": {
      "key": "value"
   },
   "smallArray" [
      {}, {} ,{}
   ],
   "hugeObject": {
      "data": {
          "hugeIntArray": [
              -1, -1, 1, 2, -1 ...
          ]
      },
      "key": "value"
   }
}

hugeIntArray 数组的长度可以超过 2,000,000,并使 JSON 文件大于 15 MB。

我尝试用 Gson 解析,需要 7 秒,还有 Moshi,需要 11 秒。

我发现 Moshi 可以通过自定义 Json 适配器和序列进行延迟加载。但我不能将它应用到我的架构中。

我的目标是像序列或流一样使用它,将 int 值转换为图像的像素。

有什么方法可以避免在这种情况下使用 Json?数据实际上应该是二进制格式

你试过JsonReader了吗?它专门用于将 json 文件作为流读取