将JSON数据加载到ExtJS数据存储时出现问题

将JSON数据加载到ExtJS数据存储时出现问题,json,extjs,extjs4,Json,Extjs,Extjs4,在如何配置ExtJS数据存储以读取传入的JSON数据方面,我尝试了我能想到的每一种组合。我正在获取以下JSON数据: [{ "data_type": {"attribute1" : "value1", "attribute2" : "value2", "attribute3" : "value3" } }, { "data_type": {"attribute1": "value4"

在如何配置ExtJS数据存储以读取传入的JSON数据方面,我尝试了我能想到的每一种组合。我正在获取以下JSON数据:

[{ "data_type": {"attribute1" : "value1",
                  "attribute2" : "value2",
                  "attribute3" : "value3" 
                  }
 },
 { "data_type": {"attribute1": "value4",
                  "attribute2" : "value5",
                  "attribute3" : "value6" 
                  }
 }
]
我不想解析JSON并重新格式化它以使ExtJS满意,因为它看起来是多余的。我想要的是一个数据存储,它允许我:

    Ext.create('Ext.container.Container', 
    {
        id: 'junk',
        renderTo: 'slider',
        width: 960,
        height:600,
        layout: 'vbox',
        items: [
           {
              xtype: 'grid',
              title: 'foobar',
              height: 400,
              width: 700,
              store: my_store,
              viewConfig: { emptyText: 'No data' },
              columns: [
                  {
                     text: 'column1',
                     dataIndex: 'attribute1'
                  },{
                     text: 'column2',
                     dataIndex: 'attribute2'
                  },{
                     text: 'column3',
                     dataIndex: 'attribute3'
                  }
              ]
           }
        ]
    }
我知道ExtJS知道如何解析这个JSON,因为我可以:

var foo = Ext.decode(data);
var good_data = foo[0].data_type.attribute1
正如我所期望的那样,它返回“value1”。有谁能帮我理解这个神奇的咒语,让我得到一个数据模型并存储起来


谢谢

首先,您应该创建模型:

Ext.define('SomeModel', {
    extend: 'Ext.data.Model',
    fields: [
        {name: 'attribute1'},
        {name: 'attribute2'},
        {name: 'attribute3'}
    ]
});
然后,您可以通过将
记录
属性设置为
数据类型
,将存储配置为支持您的数据格式:

var store = Ext.create('Ext.data.Store', {
    autoLoad: true,
    data : data,
    model: 'SomeModel',
    proxy: {
        type: 'memory',
        reader: {
            type: 'json',
            record: 'data_type'
        }
    }
});

工作示例:

顺便说一下,我将数据保存在javascript变量中。目前它是document.jsonData,我知道它不是很好,但我打算稍后修复它。谢谢!指向JSFIDLE的链接非常有用,我似乎已经发现传入的json并不像它看起来那样,因为对于相同格式的静态数据,它可以工作,但是对于传入的数据,它不工作。。看起来像是一些隐藏字符或类似的东西让ExtJS感到困惑。事实证明,我需要做的是:
var my_data=JSON.parse(jsonString)
,然后将my_data变量交给数据存储,而不是交给纯文本。