带有特殊字符的Ext.data.JsonStore

时间:2012-08-02 18:05:02

标签: json extjs4 special-characters

我正在创建一个Ext.data.JsonStore来显示图表。它以C#代码编码构建的数据存储,并通过以下方式插入页面:

Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "Data", dataScript, true);

这是生成的javascript代码:

var store = Ext.create('Ext.data.JsonStore', {
   fields: ["name", "ASAP", "Phase 2", "test", "Version 2.0 SR 1"],

   data: [
{ "name": "ASAP", "ASAP": 30, "Phase 2": 10, "test": 5, "Version 2.0 SR 1": 10 } ,
{ "name": "Phase 2", "ASAP": 12, "Phase 2": 5,  "test": 15, "Version 2.0 SR 1": 5 }   
   ]
}); 

问题是在“2.0版SR 1”字段中有一个'。'这导致脚本错误。

它返回的错误是:

SCRIPT1004: Expected ';' 
ext-all.js, line 18 character 5081

我假设我需要以某种方式进行编码,但我尝试将字段修改为无效:

Version 2\\.0 SR 1
Version 2\.0 SR 1
Version 2\u002E0 SR 1

如果我删除'。'或者用'_'替换代码。

1 个答案:

答案 0 :(得分:0)

Ext.data.JsonStore类使用这样的代理/阅读器配置自动配置自己:

proxy: {
    type  : 'ajax',
    reader: 'json',
    writer: 'json'
}

但是,对于您所描述的情况,这还不够,因为您需要在JSON阅读器上启用useSimpleAccessors config。那么,解决方案是使用常规的Ext.data.Store,并明确指定代理和阅读器:

var store = Ext.create('Ext.data.Store', {
    proxy: {
        type: 'memory',
        reader: {
            type: 'json',
            useSimpleAccessors: true
        }
    },

    fields: ["name", "ASAP", "Phase 2", "test", "Version 2.0 SR 1"],

    data: [
        { "name": "ASAP", "ASAP": 30, "Phase 2": 10, "test": 5, "Version 2.0 SR 1": 10 } ,
        { "name": "Phase 2", "ASAP": 12, "Phase 2": 5,  "test": 15, "Version 2.0 SR 1": 5 }   
    ]
});