Передача объекта с циклическими ссылками с сервера на клиентский Javascript при сохранении округлости

Я пытаюсь передать объект с круговыми ссылками из node.js-сервера на клиентский javascript.

Сервер (node.js):

var object = { circular: object }
//....
app.get('/', function(req, res){    
    res.render('index.jade', {object: object});
});

На стороне клиента Jade/Javascript

script var object = !{JSON.stringify(object)};

Здесь я получаю ошибку, что object содержит круглые ссылки.

Любой способ получить object на стороне клиента javascript, с или без круговые ссылки?

Ответ 1

У Дугласа Крокфорда есть решение для этого, которое я успешно использовал для решения этой проблемы раньше: Cycle.js

вместо того, чтобы просто использовать stringify и parse, вы сначала вызываете decycle и восстанавливаете с помощью retrocycle

var jsonString = JSON.stringify(JSON.decycle(parent));
var restoredObject = JSON.retrocycle(JSON.parse(jsonString));

JSFiddle