Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将JSON字符串放入存储_Json_Extjs - Fatal编程技术网

将JSON字符串放入存储

将JSON字符串放入存储,json,extjs,Json,Extjs,这里有一个简单的问题。如何将此JSON字符串放入Ext.data.Store { "elements":[ { "element":{ "name":"value 1", "id":"element 1", "attributes":[ { "attrname":"id", "att

这里有一个简单的问题。如何将此JSON字符串放入Ext.data.Store

   {
   "elements":[
      {
         "element":{
            "name":"value 1",
            "id":"element 1",
            "attributes":[
               {
                  "attrname":"id",
                  "attrvalue":"This is the ID"
               },
               {
                  "attrname":"name",
                  "attrvalue":"This is the name"
               },
               {
                  "attrname":"description",
                  "attrvalue":"This is the description"
               },
               {
                  "attrname":"table_name",
                  "attrvalue":"This is the table"
               }
            ]
         }
      }
   }
这是我问题的简化版本:


干杯

由于JSON将从服务器返回,您需要做的第一件事是将它从JSON格式的字符串反序列化为一个可以导航的对象。假设它是有效的JSON,只需使用Ext.decode()即可

这将给出一个在“elements”键处具有对象数组的对象。只需在elements数组上循环,并创建一个可以插入到存储中的新模型实例

下面是一个链接,指向一个实例:

下面是该示例中的代码:

var data = YOUR_DATA_HERE,
var store = Ext.create('Ext.data.Store', {
    fields: ['id', 'name', 'description', 'table_name'],
    proxy: {
        type: 'memory'
    }
})
Ext.create('Ext.grid.Panel', {
    title: 'Test Data',
    store: store,
    columns: [{
        text: 'ID',
        dataIndex: 'id'
    }, {
        text: 'Name',
        dataIndex: 'name'
    }, {
        text: 'Description',
        dataIndex: 'description'
    }, {
        text: 'Table Name',
        dataIndex: 'table_name'
    }],
    renderTo: Ext.getBody()
});
var decoded = Ext.decode( data );
// loop over decoded data
for( var i=0; i<decoded.elements.length; i++ ) {
    var element = decoded.elements[ i ].element;
    // set implicit model
    var model = {};
    // loop over attributes
    for( var x=0; x<element.attributes.length; x++ ) {
        var attribute = element.attributes[ x ];
        model[ attribute.attrname ] = attribute.attrvalue;
    }
    // implicitly cast data as Model
    store.add( model );
}
var data=此处为您的数据,
var store=Ext.create('Ext.data.store'{
字段:['id','name','description','table_name'],
代理:{
键入:“内存”
}
})
Ext.create('Ext.grid.Panel'{
标题:“测试数据”,
店:店,,
栏目:[{
文本:“ID”,
数据索引:“id”
}, {
文本:“名称”,
数据索引:“名称”
}, {
文字:“说明”,
数据索引:“说明”
}, {
文本:“表名”,
dataIndex:'表名称'
}],
renderTo:Ext.getBody()
});
var decoded=Ext.decode(数据);
//循环解码数据

对于(var i=0;iCan您能提供更多信息吗?这个JSON从哪里来?一个存储将存储模型实例;这个存储将存储多个“元素”实例吗?看起来像每个“属性”将是一个单独模型的实例。您可以使用关联。我的JSON来自我的服务器的请求,我将其转换为字符串。现在,我尝试将这些单独的属性放入一个存储中,然后将它们放入一个网格。如果您遵循我的链接,它将为您提供更多详细信息遵循此示例:可能很明显,这是一个可能的重复,我链接了这个该死的东西,看在上帝的份上。先生,你是个天才。这非常有效,谢谢。我如何才能从模型中提取elements.element.name并将其放入它自己的列中?这应该像模型[“somecolumnname”]一样简单=elements.element.nameKind。这个脚本真正做的就是创建一个具有键/值对的通用JS对象。因为存储有一个“字段”定义时,它会自动尽最大努力将传入的JS对象强制转换为商店知道如何使用的模型。有一个完整的API用于创建用户定义的模型,并使用适当的getter/setter方法与模型的属性交互。最后,我建议您朝这个方向走,因为“字段”配置本身不利于重用,而正确的模型定义则有利于重用。很乐意帮忙!祝你好运!