如何在node.js中使用ecma6(typescript)parsing一个Map到json

与下面的代码,我得到了app.js使用节点5.1和typescript 6.1.2错误

我想parsing的文件是来自firefox的bookmark.json。 我的目标是将其parsing为一张地图,并将其parsing为json。

'use strict'; declare function require(name:string); let fs = require('fs'); fs.readFile( './bookmarks.json', 'utf8', handleFile ); function handleFile( err, data ) { function strMapToObj(strMap) { let obj = Object.create(null); for (let [k,v] of strMap) { obj[k] = v; } return obj; } function strMapToJson(strMap) { return JSON.stringify(strMapToObj(strMap)); } function objToStrMap(obj) { let strMap = new Map(); for (let k of Object.keys(obj)) { strMap.set(k, obj[k]); } return strMap; } function jsonToStrMap(jsonStr) { return objToStrMap(JSON.parse(jsonStr)); } if(err) throw err; let myMap = jsonToStrMap(JSON.parse(JSON.stringify(data))); console.log(myMap); // works well let result = strMapToJson(myMap); console.log(result); // returns an error } 

(strMap的let [k,v])出现语法错误,

如何解决它?

如何从firefox bookmarks.json这样的地图parsing回json?

好的,这里是我的解决scheme:我使用从https://github.com/JSON8/JSON8 json8库

 'use strict'; declare function require(name:string); let fs = require('fs'); let oo = require('json8'); fs.readFile( './bookmarks.json', 'utf8', handleFile ); function handleFile( err, data ) { function mapToJson(map) { return oo.serialize(map); } function objToStrMap(obj) { let strMap = new Map(); for (let k of Object.keys(obj)) { strMap.set(k, obj[k]); } return strMap; } function jsonToStrMap(jsonStr) { return objToStrMap(JSON.parse(jsonStr)); } if(err) throw err; let myMap = jsonToStrMap(JSON.parse(JSON.stringify(data))); //console.log(myMap); let result = mapToJson(myMap); console.log(result); // gives the correct object back }