HarmonyOS 鸿蒙Next中如何计算一个json报文占用了多少kb

HarmonyOS 鸿蒙Next中如何计算一个json报文占用了多少kb 例如接口返回了一个json报文,我需要计算它占用了多少kb,怎么算出来

4 回复

可以使用 TextEncoder 将 JSON 字符串编码为字节数组,默认编码格式为 UTF-8,该字节数组的长度就是所占大小,单位为字节(B)

import util from '@ohos.util';

// 1. 获取 TextEncoder 对象实例
const encoder = new util.TextEncoder();
// 2、使用 TextEncoder 计算 jsonString 的字节长度,单位:字节(B)
const byteLength = encoder.encodeInto(jsonString).length;

// 如果需要单位为 KB,并保留两位小数
const KB_Langth = Number((byteLength/1024).toFixed(2))

更多关于HarmonyOS 鸿蒙Next中如何计算一个json报文占用了多少kb的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


可用响应头headers 里面的  content-length 字段。

在HarmonyOS 鸿蒙Next中,计算JSON报文大小(KB)可用以下方法:

  1. 将JSON对象转为字符串:
let jsonStr = JSON.stringify(yourJsonObject);
  1. 获取字节长度:
let byteSize = new TextEncoder().encode(jsonStr).length;
  1. 转换为KB:
let kbSize = byteSize / 1024;

注意:计算结果是未压缩的原始数据大小,若涉及网络传输需要考虑编码和压缩因素。

在HarmonyOS Next中计算JSON报文大小的方法:

  1. 使用标准JSON序列化后计算字节长度:
let jsonData = {key: "value"}; // 你的JSON对象
let jsonString = JSON.stringify(jsonData);
let sizeInBytes = new TextEncoder().encode(jsonString).length;
let sizeInKB = sizeInBytes / 1024;
  1. 如果需要更精确的计算(考虑Unicode字符):
function getJsonSizeKB(jsonObj) {
    const str = typeof jsonObj === 'string' 
        ? jsonObj 
        : JSON.stringify(jsonObj);
    // 计算UTF-8编码下的字节长度
    let bytes = 0;
    for (let i = 0; i < str.length; i++) {
        const code = str.charCodeAt(i);
        if (code <= 0x7f) {
            bytes += 1;
        } else if (code <= 0x7ff) {
            bytes += 2;
        } else if (code <= 0xffff) {
            bytes += 3;
        } else {
            bytes += 4;
        }
    }
    return bytes / 1024;
}
  1. 如果是网络请求返回的JSON,可以直接从响应头获取:
// 假设使用http模块
let response = await http.createHttp().request(url);
let sizeInKB = response.header['Content-Length'] / 1024;

注意事项:

  • 计算时需要考虑JSON中的Unicode字符可能占用多个字节
  • 实际传输大小可能因压缩或编码方式有所不同
  • 本地计算结果与网络传输大小可能存在微小差异
回到顶部