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)
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.

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

HarmonyOS
2024-08-03 11:32:59
浏览
收藏 0
回答 1
回答 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}`)
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.

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

jsonString = jsonString.replace(new RegExp('"',"xx"),'\\"')
  • 1.
分享
微博
QQ
微信
回复
2024-08-03 17:22:18


相关问题
HarmonyOS 遇到JSON.stringify crash
802浏览 • 1回复 待解决
HarmonyOS JSON.stringify一个hasmap的问题
495浏览 • 1回复 待解决
HarmonyOS 对于多层组件如何减少层数
387浏览 • 1回复 待解决
HarmonyOS 多层动态嵌套JSON如何取值
555浏览 • 1回复 待解决
HarmonyOS 键盘输入不能输入负数
277浏览 • 1回复 待解决
鸿蒙有输入输出管理吗
7708浏览 • 2回复 待解决
HarmonyOS napi输入输出流的示例代码
693浏览 • 1回复 待解决
napi里面,相同输入输出不一致
2252浏览 • 1回复 待解决
HarmonyOS string.json中如何定义数组类型
444浏览 • 1回复 待解决