鸿蒙中JSON.stringify输入多层数组不能正确输出?

let map = new Map<string,string>() 
map.set('id','24') 
map.set('name','2') 
 
let editNameArray: Map<string,string>[] = [] 
editNameArray.push(map) 
 
let temp = JSON.stringify(editNameArray)

输出temp为[{}]。为什么会这样,想要用jsonstring要怎么处理?

阅读 684
1 个回答

花花,你可以使用以下方式:

let map = new Map<string,string>() 
map.set('id','24') 
map.set('name','2') 
let editNameArray:Map<string,string>[] = [] 
let result:Record<string,object>[] = [] 
editNameArray.push(map); 
//利用Record做JSON.stringify解析 
let jsonObject:Record<string,Object> = {}; 
editNameArray.forEach((value,key) => { 
  if (key != undefined && value != undefined) { 
    //第二层遍历 
    if (value instanceof Map) { 
      let InJsonObject:Record<string,Object> = {}; 
      value.forEach((value,key) => { 
        if (key != undefined && value != undefined) { 
          InJsonObject[key] = value; 
        } 
      }) 
      result.push(InJsonObject) 
    } 
  } 
}) 
let jsonString:string = JSON.stringify(result); 
console.debug(`JSON字符串:${jsonString}`)

JSON转换是没办法转换成结果包含\符号的,所以需要对返回的 jsonString:string做额外处理,可以使用如下代码进行结果字符串替换:

jsonString = jsonString.replace(new RegExp('"',"xx"),'\\"')
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题