2016-11-02 18 views
1

Я попытался выполнить сериализацию моего объекта qooxdoo в JSON, но я всегда получаю «слишком много рекурсии» - errormessage (в Firebug-консоли), если я попробую следующее :Ошибка «слишком много рекурсии» при попытке сериализации Qooxdoo-Object

qx.util.Serializer.toJson (this.getGameData())

Также .toNativeObject-функция выдает эту ошибку. Руководство по API очень тонкое для этого: http://www.qooxdoo.org/current/apiviewer/#qx.util.Serializer

У кого-нибудь есть рабочий пример для меня или предложение, что может быть причиной этого?

Спасибо и поздравления

ответ

2

Один из ваших объектов должны иметь свойство или аналогичный, который относится к объекту, который уже сериализации - нет ничего плохого в использовании qx.util.Serializer, но если вы даете ему объект, который имеет рекурсивный вы получите ошибку рекурсии.

Вы можете использовать игровую площадку Qooxdoo (http://www.qooxdoo.org/devel/playground/), чтобы создать пример своей проблемы, чтобы другие могли помочь вам диагностировать вашу проблему; когда вы можете воспроизвести его, используйте кнопку «Сократить URL», чтобы создать ссылку tinyurl.

Вот рабочий пример qx.util.Serializer, вы можете скопировать & вставить его на игровую площадку (SO обыкновение позвольте мне использовать tinyurls :()

qx.Class.define("abc.MyClass", { 
    extend: qx.core.Object, 

    properties: { 
    alpha: { 
     init: null, 
     nullable: true 
    } 
    } 
}); 

var my = new abc.MyClass(); 
my.set({ alpha: 1 }); 
this.debug(qx.util.Serializer.toJson(my)); 


/* ****************************** 
* Show the log by clicking the "Log" button in the toolbar to see the output 
*/ 
+0

Спасибо за ваш пример, Джон, и жаль мой поздний ответ. Я не получил предупреждения от SO, что кто-то ответил и увидел это просто случайно. Я получил его сейчас. Проблема была действительно ошибкой рекурсии. В qooxdoo нет проблем, когда дочерний объект имеет ссылку на его родительский объект, но сериализатору, похоже, это не нравится. Другая проблема, которую я обнаружил, - это использование объектов, обладающих свойствами другого типа сложного объекта. Там мне пришлось передать свойство с текущим именем класса объекта, который хранится в json. Это мне нужно в делегате для маршала. – Ricky

Смежные вопросы