将 Typescript Map<string, string> 转换为 json 字符串表示

新手上路,请多包涵

我在打字稿中有一个 Map<string, string> 变量:

 let m = Map<string, string>().set('tag', 'v1');

我想转换为 json 字符串表示形式:

 '{"tag": "v1"}'

我尝试了 3 种不同的方法。首先是使用 m.toString() 。其次是使用 JSON.stringify(m) 。两者都返回了 {} 。我什至尝试将 Map 转换为 javascript object 先转换为字符串:

 function MapToString(map): string {
  let ro = {};
  Object.keys(map).forEach( key => {
    ro[key] = map[key];
  });
  return JSON.stringify(ro);
}

s = MapToString(m);

当我尝试在控制台中打印它时,它也返回了 {}

原文由 breezymri 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.9k
2 个回答

我最终放弃了使用 es6 Map 并切换到 TSMaptags.toJSON() 工作。

原文由 breezymri 发布,翻译遵循 CC BY-SA 3.0 许可协议

可读?不,但它有效

JSON.stringify(
  Array.from(
    new Map().set('tag', 'v1').set('foo', 'bar').entries()
  )
  .reduce((o, [key, value]) => {
    o[key] = value;

    return o;
  }, {})
)

就像@james-hay 指出的那样,你有一个可能使对象为空的错字

原文由 Lostfields 发布,翻译遵循 CC BY-SA 3.0 许可协议

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