NodeJS 没有序列化 ES6 Map

Red*_*ddy 5 javascript dictionary node.js ecmascript-6

这是我javascript正在执行的示例代码node.js

let commutertrip = new Map();
let t = {
    userId: 1,
    capacity: 4,
    commuteId: 1,
    endTime: new Date(),
    id: 1,
    status: "QUEUED",
    startTime: new Date(),
    price: 100
};
commutertrip.set(1, t);
let trip = {
    id: 2,
    poolerId: 3,
    poolerTrip: {
        capacity: 4,
        commuteId: 8,
        id: 1,
        endTime: new Date(),
        startTime: new Date(),
        status: "QUEUED",
        price: 55,
        userId: 1
    },
    commuterTrip: commutertrip,
    status: "QUEUED"
};
console.log(JSON.stringify(trip));
Run Code Online (Sandbox Code Playgroud)

输出

{"id":2,"poolerId":3,"poolerTrip":{"capacity":4,"commuteId":8,"id":1,"endTime":"2016-07-27T06:59:51.773Z","startTime":"2016-07-27T06:59:51.773Z","status":"QUEUED","price":55,"userId":1},"commuterTrip":{},"status":"QUEUED"}
Run Code Online (Sandbox Code Playgroud)

我没有找到如何解决这个问题?相同的代码在这里javascript工作正常 这是节点参数node --debug-brk=33172 --nolazy --harmony bin\www

Mor*_*ani 1

这里的问题不在于您的代码,甚至不在于NodeJS. 主要原因是根本Set无法Map连载。但作为序列化这些的一种方法,您可以先将它们转换为数组:

var map = new Map([[1, 2], ['foo', 3], [[23, 43], 'bar']])
var data = { number: 23, myKey: map };

var serialized = JSON
  .stringify(data, (k, v) => (v instanceof Map) ? [...v] : v);

console.log(serialized);
Run Code Online (Sandbox Code Playgroud)