2012-04-13 27 views
0

我想將EXTjs類編碼爲Json,但是,我不能..如何從Extjs.Class編碼爲JSON字符串?

我使用JSON.stringify,但它給出了類型錯誤的異常。

我該怎麼做?

感謝和在這裏我的代碼。

Ext.define('Text',{ 
    extend : 'Ext.Img', 
    x : 50, 
    y : 50, 
    size : 100, 
    text : 'Text', 
    name : 'Text', 
    src : ' ', 
    tag : '', 
    Events : [] 
}); 

var text = new Text(); 
var temp = JSON.stringify(text); 

回答

5

這裏的問題是,ExtJS的創造上的對象,變成是週期性的內部參考。因此,默認的JSON序列化器失敗。

您需要手動定義toJSON方法將由JSON.stringify被稱爲:

Ext.define('Text', { 
    extend : 'Ext.Img', 
    x : 50, 
    y : 50, 
    size : 100, 
    text : 'Text', 
    name : 'Text', 
    src : ' ', 
    tag : '', 
    Events : [], 

    toJSON: function() { 
     return 'Whatever you like' + this.text + this.size // etc. 
    } 

}); 

JSON.stringify(new Text()); // "Whatever you likeText100" 
+0

這是非常好!謝謝! – 2012-04-23 00:46:06

7

嘗試使用

Ext.encode(Object) 

它編碼一個對象,陣列或其它值&返回的JSON字符串。

參考Ext.JSON

serialize object

+0

我試過了,但錯誤.. '的RangeError:最大調用堆棧大小超出' – 2012-04-13 08:55:02

+0

嘗試'VAR看到= [] ; 變種臨時= JSON.stringify(文本,功能(鍵,VAL){ 如果(typeof運算VAL == 「對象」){ 如果(seen.indexOf(VAL)> = 0) 返回未定義 seen.push (val) } return val });的console.log(溫度); ' – MMT 2012-04-13 09:38:54

+0

是的,我用這個代碼,但是那個錯誤.. – 2012-04-13 10:11:52