【问题标题】:How to Encode from Extjs.Class to JSON String?如何从 Extjs.Class 编码为 JSON 字符串?
【发布时间】:2012-04-25 14:12:18
【问题描述】:

我想将 EXTjs 类编码为 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);

【问题讨论】:

    标签: json extjs extjs4


    【解决方案1】:

    尝试使用

    Ext.encode(Object)
    

    它编码一个对象、数组或其他值并返回 JSON 字符串。

    参考Ext.JSON

    serialize object

    【讨论】:

    • 我试过了,但是错误..'RangeError: 超出最大调用堆栈大小'
    • 试试var seen = []; var temp = JSON.stringify(text, function(key, val) { if (typeof val == "object") { if (seen.indexOf(val) >= 0) return undefined seen.push(val) } return val }); console.log(temp);
    • 但是,我解决了这个问题,但它并不聪明。我为 Class 做了解析器。该错误的原因是 Ext 核心包含在 Class 中。所以我做了解析器。我从你的回答中得到了想法。谢谢!如果您知道其他方式,请告诉我。
    【解决方案2】:

    这里的问题是 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"
    

    【讨论】:

    • 这非常非常好!谢谢!
    猜你喜欢
    • 2016-04-05
    • 2012-07-15
    • 2013-06-07
    • 1970-01-01
    • 2011-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多