2012-04-13 49 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