ExtJs根节点
如果我得到这样一个Json,那么ExtJs根节点,extjs,extjs4.1,Extjs,Extjs4.1,如果我得到这样一个Json,那么root属性值是多少: { "status": { "status": 0, "msg": "Ok", "protocolversion": "extjs.json" }, "value": { "table": [ [ "admin", "Administrator",
root
属性值是多少:
{
"status": {
"status": 0,
"msg": "Ok",
"protocolversion": "extjs.json"
},
"value": {
"table": [
[
"admin",
"Administrator",
""
],
[
"test",
"Test",
""
]
],
"total": 2
}
}
数据将显示在网格面板中,1行是管理,1行是测试,等等
尝试:
值
,值.表
如何使其工作?在上面的示例中,“值”是根属性。但对于JSON阅读器,它是一个属性名(如果根是嵌套的,则是一个以点分隔的属性名列表)
因此,您可以分配到您需要关注的领域
字段:['table.admin','table.test']value.table对于root属性是正确的,但是您使用的是json格式,我认为默认情况下Ext不会处理该格式。它有一个用于对象数组的json读取器,而不是用于没有对象映射信息的字段值嵌套数组 如果必须使用该格式,则需要创建自己的读写器,或者只使用Ext.Ajax.request(),并在回调中将嵌套数组解析为对象。比如:
Ext.Ajax.request({
url: 'path.com/to/content',
success: function (response, operation) {
var data = Ext.JSON.decode(response.responseText);
var fields = data.value.table;
var records = [];
Ext.Array.each(fields, function (fieldArray, fieldIndex) {
Ext.Array.each(fieldArray, function(fieldValue, valueIndex) {
//Create record object if it doesn't exist
var record = records[valueIndex] || {};
//Create a switch statement based on the array index to set fields
switch(fieldIndex) {
case 0:
record.User_id = fieldValue;
break;
case 1:
record.Username = fieldValue;
break;
}
});
});
//Add the objects to the empty store
store.add(records);
}
});
这绝对不是一个生产解决方案,因为它不会处理列表末尾的空字符串,也不会处理每个字段都有一个锯齿状数组的情况,我无法想象该如何处理。如果它在您的控制或影响范围内,我建议使用更像Ext建议的格式,这样您就可以使用内置的json代理/读/写器,或者疯狂地使用它并实现Ext的远程过程调用格式:
{
"success": true,
"message": "Success",
"data": [
{
"User_id": "admin",
"Username": "Administrator"
}, {
"User_id": "admin",
"Username": "Administrator"
}
]
}
谢谢是的,格式是特殊的。我希望可以很容易地解析它。