HarmonyOS 鸿蒙Next JSON.stringfy模型数组时模型内Map属性数据丢失

发布于 1周前 作者 yuanlaile 来自 鸿蒙OS

HarmonyOS 鸿蒙Next JSON.stringfy模型数组时模型内Map属性数据丢失

JSON.stringfy模型数组,模型内Map属性的数据丢失

2 回复
当前的设计是不支持map、hashmap类型转字符串。

可以使用Array.from()转化map对象对josn

import HashMap from '@ohos.util.HashMap';

let hashMap: HashMap<string, number> = new HashMap();

hashMap.set(“squirrel”, 123);

hashMap.set(“sparrow”, 356);

console.log("cbl " +JSON.stringify(Array.from(hashMap)) );

在HarmonyOS鸿蒙系统中,使用JSON.stringify处理包含复杂数据结构(如模型数组内嵌Map属性)的对象时,确实可能会遇到数据丢失的问题。这通常是由于JSON.stringify的默认行为不直接支持Map类型的数据序列化。

为了解决这个问题,你可以在序列化之前将Map对象转换为普通对象(Object)。这可以通过遍历Map的键值对并构建一个新的Object来实现。例如:

function mapToObject(map) {
    let obj = {};
    for (let [key, value] of map) {
        obj[key] = value;
    }
    return obj;
}

// 假设你的模型数组为modelArray,且每个模型内有一个Map属性名为mapProperty
let processedModels = modelArray.map(model => ({
    ...model,
    mapProperty: mapToObject(model.mapProperty)
}));

let jsonString = JSON.stringify(processedModels);

这种方法确保了Map中的数据能够被正确地序列化到JSON字符串中。注意,如果Map中的值也是复杂类型(如另一个Map或自定义对象),则可能需要递归地应用此转换逻辑。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部