Deserializar un objeto JSON en Fabric.js

Estoy desarrollando una pizarra colaborativa utilizando fabricjs. Cuando un usuario crea un nuevo objeto de estructura, lo serializo y lo envío a todos los demás usuarios.

var rect = new fabric.Rect();
canvas.add(rect);  
socket.emit("newObject", JSON.stringify(rect)); // sends the object to other users

Cuando esos usuarios reciben el objeto serializado, deben deserializarse y agregarse a su lienzo. ¿Cuál es la mejor manera de hacer esto? No pude encontrar una función que deserialice un solo objeto, solo el lienzo completo (loadFromJSON), así que implementé una solución poco elegante:

function drawRoomObjects(roomObjects){
  var canvasString = "{\"objects\":[";
  for(var roomObjectKey in roomObjects){
    canvasString += roomObjects[roomObjectKey];
  }
  canvasString += "], \"background\":\"\"}";
  var tmpCanvas = new fabric.Canvas();
  tmpCanvas.loadFromJSON(canvasString);
  for(var k in tmpCanvas.getObjects()) {
    canvas.add(tmpCanvas._objects[k]);
  }
  canvas.renderAll();
}

¿Alguna sugerencia para una mejor manera de hacerlo?

Respuestas a la pregunta(1)

Su respuesta a la pregunta