0

root如果我得到这样的 Json,属性值是多少:

{
    "status": {
        "status": 0,
        "msg": "Ok",
        "protocolversion": "extjs.json"
    },
    "value": {
        "table": [
            [
                "admin",
                "Administrator",
                ""
            ],
            [
                "test",
                "Test",
                ""
            ]
        ],
        "total": 2
    }
}

数据将显示在网格面板中,1 行是管理员,1 行是测试等。

试过:

value,value.table

如何让它工作?

4

2 回答 2

1

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"
        }
    ]
}
于 2013-04-04T17:46:01.130 回答
0

在上面的示例中,“值”是根属性。但对于 JSON 阅读器,它是一个属性名称(如果根是嵌套的,则它是一个以点分隔的属性名称列表)。

所以你可以分配到你需要关注的领域。

字段:['table.admin','table.test']

于 2013-04-04T16:57:23.863 回答