HarmonyOS鸿蒙Next中ArkTS如何快速将大JSON字符串(15MB左右)转换为ArkTS对象

HarmonyOS鸿蒙Next中ArkTS如何快速将大JSON字符串(15MB左右)转换为ArkTS对象 如题 我的json 字符串 大概有15MB左右,读取都没有问题,解析都没问题,就是 解析成对象的时候需要10秒左右,请教各位大神如何优化

另外 JSON5 和 class-transformer 我都试了,都比较慢

JSON5 大概要25 秒多,class-transformer 大概也是10多秒。

感谢感谢 附件为 json 文件压缩包。感谢感谢

2 回复

在HarmonyOS鸿蒙Next中,使用ArkTS处理大JSON字符串(如15MB)时,可以通过JSON.parse方法将其转换为ArkTS对象。由于JSON字符串较大,直接使用JSON.parse可能会导致性能问题或内存溢出。为了优化性能,可以采用流式解析或分块处理的方式。

  1. 流式解析:使用JSON.parse的第二个参数,传入一个reviver函数,逐行或逐块解析JSON字符串。这种方式可以减少内存占用,避免一次性加载整个JSON字符串。

    const jsonString = '...'; // 15MB JSON字符串
    const jsonObject = JSON.parse(jsonString, (key, value) => {
        // 逐行或逐块处理
        return value;
    });
  2. 分块处理:将大JSON字符串分割成多个小块,分别解析后再合并。这种方式可以进一步降低内存压力。

    const jsonString = '...'; // 15MB JSON字符串
    const chunkSize = 1024 * 1024; // 1MB
    let jsonObject = {};
    
    for (let i = 0; i < jsonString.length; i += chunkSize) {
        const chunk = jsonString.slice(i, i + chunkSize);
        const partialObject = JSON.parse(chunk);
        Object.assign(jsonObject, partialObject);
    }
  3. 使用第三方库:如果内置的JSON.parse无法满足需求,可以考虑使用第三方库如json-bigintstream-json,这些库专门处理大JSON数据,支持流式解析和分块处理。

    import { parse } from 'json-bigint';
    const jsonString = '...'; // 15MB JSON字符串
    const jsonObject = parse(jsonString);

更多关于HarmonyOS鸿蒙Next中ArkTS如何快速将大JSON字符串(15MB左右)转换为ArkTS对象的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,使用ArkTS处理大JSON字符串(如15MB)时,建议采用流式解析以提高性能和内存效率。可以使用JSON.parse方法,但需注意内存占用。对于超大JSON,建议分块读取并逐步解析,或使用第三方库如simdjson进行高效解析。确保在解析过程中处理可能的异常,以避免应用崩溃。

回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!