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

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


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

构建数据:

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
2073浏览 • 1回复 待解决
如何实现MapJSON字符串
1029浏览 • 1回复 待解决
如何在 ArkTS 定义使用接口?
48浏览 • 0回复 待解决
HarmonyOS JSONmap结构如何序列化
367浏览 • 1回复 待解决
HarmonyOS json数据如何转成map
804浏览 • 1回复 待解决
如何实现ArkTS与C/C++数组转换
553浏览 • 1回复 待解决
如何实现ArkTS与C/C++HashMap转换
991浏览 • 0回复 待解决
如何在ArkTS合并对象
942浏览 • 1回复 待解决
如何在ArkTS合并对象?
1355浏览 • 1回复 待解决
HarmonyOS JSON怎么转Map
177浏览 • 1回复 待解决
如何在ArkTS动态加载so
366浏览 • 1回复 待解决
如何实现PixelMapbase64相互转换
1659浏览 • 1回复 待解决
ArkTS如何实现反射?
195浏览 • 1回复 待解决
如何JSON字符串转为Map
236浏览 • 1回复 待解决