如何在ArkTS中实现JSON和Map的转换?

Map不支持序列化,不能通过JSON.stringify接口返回JSON字符串。


HarmonyOS
2024-05-23 22:42:07
浏览
已于2024-5-23 22:43:31修改
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
guo_jerry

构建数据:

let map: Map<string, ESObject> = new Map<string, ESObject>() 
for(let i=0;i<10;i++){ 
  let key:string = i.toString() 
  let val:string = "test:" + i.toString() 
  map.set(key,val) 
} 
let arr: Array<string> = new Array<string>(10) 
for(let i=0;i<10;i++){ 
  let val:string = "test:" + i.toString() 
  arr[i] = val 
} 
map.set("arr",arr)

1、Map先转Record类型,再通过JSON.stringify序列化。

// 递归,以防value也是Map 
function  Map2Rec(map:Map<string, ESObject>):Record<string,ESObject>{ 
  let Rec:Record<string,ESObject> = {}; 
  map.forEach((value:ESObject, key:string) => { 
    if(value instanceof Map){ 
      let vRec:Record<string,ESObject> = Map2Rec(value); 
      value = vRec 
    } 
    Rec[key] = value 
  }) 
  return Rec 
} 
  
  
let myRec:Record<string,ESObject> = Map2Rec(map) 
let str:string = JSON.stringify(myRec) 
console.info(str)

2、TS文件中封装Object.fromEntries

// ts 
export class ObjectUtil { 
  static ObjectFromEntries(source: Iterable<readonly any[]>): Object { 
    return Object.fromEntries(source) 
  } 
} 
  
//ets 
let str:string = JSON.stringify(ObjectUtil.ObjectFromEntries(map)) 
console.info(str)
分享
微博
QQ
微信
回复
2024-05-24 22:16:14
相关问题
Map类型怎么转换Json string
497浏览 • 1回复 待解决
如何实现MapJSON字符串
542浏览 • 1回复 待解决
如何在ArkTS合并对象
221浏览 • 1回复 待解决
如何在ArkTS合并对象?
357浏览 • 1回复 待解决
如何实现ArkTS与C/C++HashMap转换
361浏览 • 0回复 待解决
如何实现PixelMapbase64相互转换
357浏览 • 1回复 待解决
如何在ArkTS代码执行HTML内JS函数
804浏览 • 1回复 待解决
ArkTS如何读取本地json
5123浏览 • 1回复 待解决
json 如何转换成自定义业务类对象
360浏览 • 1回复 待解决
ArkTS侧与Native侧如何进行map数据交互
773浏览 • 1回复 待解决
如何在C/C++ 创建ArkTS对象
713浏览 • 1回复 待解决
如何在Native侧释放ArkTS对象
783浏览 • 1回复 待解决