首页 > 解决方案 > 在Angular中对对象进行字符串化时“将循环结构转换为JSON”

问题描述

我在对一组对象进行字符串化时遇到问题,该对象在其中一个键中保存来自 ng2 画布的数据。代码是

tabs.forEach((t, i) => {
 const sessionCanvasData = JSON.parse(sessionStorage.getItem('canvasUpdates' + t));

 const tabData = {
    tabId: t,
    emojiDragData: sessionStorage.getItem('dragObject' + t),
    textDragData: sessionStorage.getItem('textData' + t),
    canvasData: sessionCanvasData,
    openWhiteboard: this.whiteboardFlag,
    clearCanvasData: this.clearCanvas,
    control: this.activateControl,
    isClientDrawing: this.clientDrawing,
    isTherapistDrawing: this.therapistDrawing,
    imageId: this.imageIds,
  };

  const stringifiedTabData = JSON.stringify(tabData);
});

当代码到达 stringify 部分时,它会抛出

ERROR TypeError: Converting circular structure to JSON
    --> starting at object with constructor 'Subscriber'
    |     property '_subscriptions' -> object with constructor 'Array'
    |     index 0 -> object with constructor 'SubjectSubscription'
    --- property '_parentOrParents' closes the circle
    at JSON.stringify (<anonymous>)

数据格式为:

{"tabId":1,"emojiDragData":null,"textDragData":null,"canvasData":[{"x":0.5702628686401997,"y":0.6947257661449427,"type":0,"UUID":"01c0f112-da17-a2c5-c82b-11303769f068","selectedShape":"FreeHandShape","selectedShapeOptions":{"shouldFillShape":true,"fillStyle":"rgb(246,178,11)","lineJoin":"round","lineCap":"round"}},{"x":0.5702628686401997,"y":0.6947257661449427,"type":2,"UUID":"01c0f112-da17-a2c5-c82b-11303769f068"}],"openWhiteboard":false,"control":true,"isClientDrawing":false,"isTherapistDrawing":true,"imageId":[]}

标签: javascriptangulartypescriptstringify

解决方案


推荐阅读