HarmonyOS 鸿蒙Next 为什么 HashMap 被Json转换后只剩下{}

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

HarmonyOS 鸿蒙Next 为什么 HashMap 被Json转换后只剩下{}

为什么 HashMap 被Json转换后只剩下:{}

2 回复

这边给一个map转json的方法,您参考一下

function mapToString(map: Map<string, string | number | object>): string {
  if (map.size === 0) {
    return '';
  }
  let obj: object = new Object;
  map.forEach((value, key) => {
    obj[key] = value;
  })
  return JSON.stringify(obj);
}
function mapToObj(map: Map<string, string | number | object>): object {
  if (map.size === 0) {
    return [];
  }
  let obj: object = new Object;
  map.forEach((value, key) => {
    obj[key] = value;
  })
  return obj;
}
let map = new Map<string, string>()
map.set('machineModel', 'ALN-AL80-5.0.0.31(Beta2)-12')
map.set('deviceToken', '')
map.set('deviceType', '1')
map.set('src', '00')
map.set('deviceSdk', '1003')
map.set('appVersion', '1.0.0')
map.set('deviceEnv', '0')
map.set('sdkVersion', '1.0.0')
let str = mapToObj(map)
console.debug('str:' + JSON.stringify(str))
let map1 = new Map<string, string>()
map1.set('machineModel', 'A111111')
map1.set('deviceToken', '22222')
map1.set('deviceType', '222221')
map1.set('src', '001111')
map1.set('deviceSdk', '444455')
map1.set('appVersion', '1111.0.0')
map1.set('deviceEnv', '0111')
map1.set('sdkVersion', '1111.0.0')
let str1 = mapToObj(map1)
let arr: Array<object> = [str, str1]
let resMap = new Map<string, object[]>()
resMap.set('headBean', arr)
let reStr = mapToString(resMap)
console.debug('resMapstr:' + reStr)

更多关于HarmonyOS 鸿蒙Next 为什么 HashMap 被Json转换后只剩下{}的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


HarmonyOS 鸿蒙Next中,HashMap被Json转换后只剩下{}的情况,通常与HashMap中的数据类型或数据状态有关。以下是一些可能的原因:

  1. 空值或无效数据:HashMap中可能存储了空值(null)或无法被Json库识别的数据类型,导致转换时这些键值对被忽略。

  2. 数据类型不支持:Json库可能不支持HashMap中某些复杂数据类型的序列化。例如,如果HashMap存储了自定义对象且这些对象没有实现适当的序列化接口,则可能无法被正确转换。

  3. 递归数据结构:HashMap中可能包含了递归引用的数据结构,这可能导致Json转换过程陷入无限循环,最终表现为空对象{}

  4. Json库配置:使用的Json库可能有特定的配置,如忽略空值、忽略未设置字段等,这些配置可能影响HashMap的序列化结果。

  5. 版本兼容性问题:HarmonyOS鸿蒙Next与Json库之间可能存在版本兼容性问题,导致HashMap的序列化行为异常。

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

回到顶部