2016-07-27 12 views
3

をシリアル化されていない出力NodeJSは、これは私のサンプルコード<code>javascript</code>あるES6地図

{"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"} 

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)); 

で実行されている私は、この問題を解決する方法を見つけることができませんでしたか?同じjavascriptコードが here正常に動作します。ここノードの引数だ、ここnode --debug-brk=33172 --nolazy --harmony bin\www

+0

それはないすべての 'Map'はserialisableではありませんので。手動で行う必要があります。1.マップをプレーンなJSオブジェクトに変換します。2.シリアル化します。 – zerkms

+0

@zerkms、地図機能を持つのは何ですか?それはあなたがマップをjsonに変換することは決してできないようなものです。マップの代わりに、独自のオブジェクトを宣言する必要があります。 – Reddy

+0

ポイントは、任意の型のキーを任意の型の値に関連付けることができるデータ構造を持つことです。 – zerkms

答えて

1

問題は、あなたのコード、あるいはNodeJSではありません。主な理由は、SetMapはまったくシリアル化できませんでした。しかし、あなたが前に配列に変換することができ、これらをシリアル化するための方法として:

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);

関連する問題