javascript - 在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":[]}
解决方案
推荐阅读
- vb.net - 如何按字母对组合框中的项目进行排序
- ruby-on-rails - 如何在 Rails 中共享多个路由的条件重定向逻辑?
- angular - Angular 9 Ivy - 通用类型 'ɵɵFactoryDef' 需要 2 个类型参数
- r - 无法在 R 中的地理地图上覆盖县?
- javascript - 如何在来自api的reactjs中添加所有产品数量
- html - 移动布局中显示更多宽度
- angular - 离子角度服务器端渲染中未定义 self
- json - 我们如何在freshservice webservice的响应体中获取JSON内容?
- php - Laravel 图片上传问题
- c - 使用C合并ascii char