正常的JSON方法如下所示:
{
"list": [
{
"header1": "some value",
"header2": "some other value"
},
{
"header1": "some value",
"header2": "some other value"
},
{
"header1": "some value",
"header2": "some other value"
},
...
]
}
但是当我使用它时,由于所有" header1"和" header2"东西。
所以我想到了更像CSV的方法:
{
"headers": [ "header1", "header2" ],
"list": [
[ "some value", "some other value" ],
[ "some value", "some other value" ],
[ "some value", "some other value" ],
...
]
}
但是ExtJS4商店更喜欢第一种风格。是否有可能使用第二种格式或我应该在客户端转换它?
答案 0 :(得分:1)
我认为您需要转换它,但还有其他方法可以减少开销,例如字段上的映射属性,因此您可以实际发送一个字母来标识属性,如:
{
"list": [
{
"1": "some value",
"2": "some other value"
},
{
"1": "some value",
"2": "some other value"
},
{
"1": "some value",
"2": "some other value"
},
...
]
}
和字段:
{name: 'header1', type:'string', mapping:'1'}
{name: 'header2', type:'string', mapping:'2'}
这只是一个建议,但这会减少开销。
答案 1 :(得分:1)
您应该将Ext.data.Store与数组读取器和ajax代理一起使用。您不需要服务器端的任何标头,您应该只在客户端定义模型中的标头。举个例子,你可以在客户端使用这样的代码:
Ext.define("MyModel", {
extend: "Ext.data.Model",
fields: [
{name: "header1"},
{name: "header2"}
]
});
var theProxy = new Ext.data.proxy.Ajax({
timeout: 120000,
method: "POST",
url: "your_url_here",
reader: new Ext.data.reader.Array({
root: "list"
})
});
var store = new Ext.data.Store({
proxy: theProxy,
model: "MyModel"
});
确保在定义模型时,字段的顺序与从服务器返回的数组的顺序相同。 这将是服务器返回的内容:
{
"list": [
[ "some value", "some other value" ],
[ "some value", "some other value" ],
[ "some value", "some other value" ],
...
]
}