使用巨大的 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 文件作为流读取
我必须反序列化 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 文件作为流读取