JSON Достигнут Элемент Списка Объекта - PullRequest
0 голосов
/ 30 ноября 2018

Это, наверное, довольно глупо, но я не могу понять это.У меня есть объект (полотно ткани), которым я манипулирую с помощью TypeScript.Когда я помещаю следующее в источник,

var objects = this.canvas.getObjects()     
console.log(JSON.stringify(objects[0]));

я получаю

{
  "type": "group",
  ...
  "objects": [
      {
      "type": "path",
      ...

, но если я помещаю

console.log(JSON.stringify(objects[0].objects));

, я получаю

undefined

Я получу "group", если я поставлю console.log(JSON.stringify(objects[0].type)), поэтому я действительно не понимаю, что здесь происходит.Я предполагаю, что есть некоторые очень простые вещи, которые я не понимаю о JS и / или TS или, возможно, где-то пропущена запятая

РЕДАКТИРОВАТЬ:

Вот полный вывод console.log(JSON.stringify(objects[0],null,1)) на случай, если я что-то неправильно вставлю:

{
 "type": "group",
 "originX": "left",
 "originY": "top",
 "left": 94.83,
 "top": 83.17,
 "width": 69,
 "height": 47,
 "fill": "transparent",
 "stroke": null,
 "strokeWidth": 0,
 "strokeDashArray": null,
 "strokeLineCap": "butt",
 "strokeLineJoin": "miter",
 "strokeMiterLimit": 10,
 "scaleX": 1,
 "scaleY": 1,
 "angle": 0,
 "flipX": false,
 "flipY": false,
 "opacity": 0.5,
 "shadow": null,
 "visible": true,
 "clipTo": null,
 "backgroundColor": "",
 "fillRule": "nonzero",
 "globalCompositeOperation": "source-over",
 "transformMatrix": null,
 "skewX": 0,
 "skewY": 0,
 "objects": [
  {
   "type": "path",
   "originX": "center",
   "originY": "center",
   "left": 0,
   "top": 0,
   "width": 68,
   "height": 46,
   "fill": "#c9c9c9",
   "stroke": "transparent",
   "strokeWidth": 1,
   "strokeDashArray": null,
   "strokeLineCap": "round",
   "strokeLineJoin": "round",
   "strokeMiterLimit": 10,
   "scaleX": 1,
   "scaleY": 1,
   "angle": 0,
   "flipX": false,
   "flipY": false,
   "opacity": 1,
   "shadow": null,
   "visible": true,
   "clipTo": null,
   "backgroundColor": "",
   "fillRule": "nonzero",
   "globalCompositeOperation": "source-over",
   "transformMatrix": null,
   "skewX": 0,
   "skewY": 0,
   "pathOffset": {
    "x": 129.33333333333331,
    "y": 106.66666666666666
   },
   "path": [
    [
     "M",
     150.16666666666666,
     110.33333333333333
    ],
    [
     "Q",
     150.16666666666666,
     110.33333333333333,
     150.66666666666666,
     110.33333333333333
    ],
    [
     "Q",
     151.16666666666666,
     110.33333333333333,
     150.91666666666666,
     110.33333333333333
    ],
    [
     "Q",
     150.66666666666666,
     110.33333333333333,
     150.66666666666666,
     111
    ],
    [
     "Q",
     150.66666666666666,
     111.66666666666666,
     150,
     112
    ],
    [
     "Q",
     149.33333333333331,
     112.33333333333333,
     147.33333333333331,
     114
    ],
    [
     "Q",
     145.33333333333331,
     115.66666666666666,
     143.66666666666666,
     117
    ],
    [
     "Q",
     142,
     118.33333333333333,
     140.33333333333331,
     119.66666666666666
    ],
    [
     "Q",
     138.66666666666666,
     121,
     136.66666666666666,
     122
    ],
    [
     "Q",
     134.66666666666666,
     123,
     132.33333333333331,
     124
    ],
    [
     "Q",
     130,
     125,
     127,
     126
    ],
    [
     "Q",
     124,
     127,
     121.66666666666666,
     128
    ],
    [
     "Q",
     119.33333333333333,
     129,
     117.33333333333333,
     129.33333333333331
    ],
    [
     "Q",
     115.33333333333333,
     129.66666666666666,
     113,
     129.66666666666666
    ],
    [
     "Q",
     110.66666666666666,
     129.66666666666666,
     109,
     129.66666666666666
    ],
    [
     "Q",
     107.33333333333333,
     129.66666666666666,
     106.33333333333333,
     129.66666666666666
    ],
    [
     "Q",
     105.33333333333333,
     129.66666666666666,
     104.66666666666666,
     129.66666666666666
    ],
    [
     "Q",
     104,
     129.66666666666666,
     103,
     129
    ],
    [
     "Q",
     102,
     128.33333333333331,
     101,
     126.66666666666666
    ],
    [
     "Q",
     100,
     125,
     99,
     123.33333333333333
    ],
    [
     "Q",
     98,
     121.66666666666666,
     97.33333333333333,
     119.33333333333333
    ],
    [
     "Q",
     96.66666666666666,
     117,
     96.33333333333333,
     114
    ],
    [
     "Q",
     96,
     111,
     95.66666666666666,
     109
    ],
    [
     "Q",
     95.33333333333333,
     107,
     95.33333333333333,
     104.66666666666666
    ],
    [
     "Q",
     95.33333333333333,
     102.33333333333333,
     95.33333333333333,
     100.66666666666666
    ],
    [
     "Q",
     95.33333333333333,
     99,
     95.33333333333333,
     97.33333333333333
    ],
    [
     "Q",
     95.33333333333333,
     95.66666666666666,
     95.66666666666666,
     94.33333333333333
    ],
    [
     "Q",
     96,
     93,
     98,
     91.66666666666666
    ],
    [
     "Q",
     100,
     90.33333333333333,
     103.66666666666666,
     88.66666666666666
    ],
    [
     "Q",
     107.33333333333333,
     87,
     111,
     86
    ],
    [
     "Q",
     114.66666666666666,
     85,
     120,
     84.33333333333333
    ],
    [
     "Q",
     125.33333333333333,
     83.66666666666666,
     130.66666666666666,
     83.66666666666666
    ],
    [
     "Q",
     136,
     83.66666666666666,
     143.33333333333331,
     83.66666666666666
    ],
    [
     "Q",
     150.66666666666666,
     83.66666666666666,
     153,
     83.66666666666666
    ],
    [
     "Q",
     155.33333333333331,
     83.66666666666666,
     157.33333333333331,
     84.33333333333333
    ],
    [
     "Q",
     159.33333333333331,
     85,
     160,
     85.33333333333333
    ],
    [
     "Q",
     160.66666666666666,
     85.66666666666666,
     161.33333333333331,
     86.33333333333333
    ],
    [
     "Q",
     162,
     87,
     162.33333333333331,
     87
    ],
    [
     "Q",
     162.66666666666666,
     87,
     163,
     87.33333333333333
    ],
    [
     "Q",
     163.33333333333331,
     87.66666666666666,
     163.33333333333331,
     88
    ],
    [
     "Q",
     163.33333333333331,
     88.33333333333333,
     163.33333333333331,
     88.66666666666666
    ],
    [
     "Q",
     163.33333333333331,
     89,
     163.33333333333331,
     89
    ],
    [
     "Q",
     163.33333333333331,
     89,
     163.33333333333331,
     89
    ],
    [
     "L",
     163.33333333333331,
     89
    ]
   ]
  }
 ]
}

Ответы [ 2 ]

0 голосов
/ 03 декабря 2018

Предложение Феликса Клинга здесь.Когда у объекта JS есть собственная реализация toJSON(), JSON.stringify() вызывает его вместо значения по умолчанию: toJSON () поведение .

Объекты Fabric.js делают именно это: fabric.Group.prototype.toJSON().Как видите, массив объектов на самом деле хранится в свойстве _objects, но при сериализации группы они отображаются в objects:

toObject: function(propertiesToInclude) {
  var _includeDefaultValues = this.includeDefaultValues;
  var objsToObject = this._objects.map(function(obj) {
    var originalDefaults = obj.includeDefaultValues;
    obj.includeDefaultValues = _includeDefaultValues;
    var _obj = obj.toObject(propertiesToInclude);
    obj.includeDefaultValues = originalDefaults;
    return _obj;
  });
  var obj = fabric.Object.prototype.toObject.call(this, propertiesToInclude);
  obj.objects = objsToObject;
  return obj;
},
0 голосов
/ 30 ноября 2018

Я бы предпочел опубликовать это как комментарий, но мне не хватает повторения

Вы пытались назвать это так?console.log(JSON.stringify(objects[0]["objects"]))

...