使用不一致的数据索引extJS读取JSON数据

时间:2016-10-13 13:17:29

标签: json extjs chef

我目前正在尝试使用 ExtJS 中的JSON代理阅读器从我的Chef服务器上的端点读取数据,以便在网格上显示它。

  

通常JSON响应看起来像这样:

{
    "userId": 1,
    "id": 1,
    "title": "sunt aut facere repellat provident occaecati excepturi optioreprehenderit",
    "body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto"
}, {
    "userId": 1,
    "id": 2,
    "title": "qui est esse",
    "body": "est rerum tempore vitae\nsequi sint nihil reprehenderit dolor beatae ea dolores neque\nfugiat blanditiis voluptate porro vel nihil molestiae ut reiciendis\nqui aperiam non debitis possimus qui neque nisi nulla"
}

但是,我从端点收到的响应,特别是organizations/(organization-name)/cookbooks端点

  

是这样的:

{
    "my_cookbook_1": {
        "url": "company.com",
        "versions": [{
            "version": "0.1.0",
            "url": "company.com"
        }]
    }
}, {
    "my_cookbook_2": {
        "url": "company.com",
        "versions": [{
            "version": "0.2.0",
            "url": "company.com"
        }]
    }
}

使用前一个响应,我可以将网格上的dataIndex属性指定为name并获取相应的信息。

var optionalCookbooksGrid = Ext.create('Ext.grid.Panel', {
    store: optionalCookbooksStore,
    width: '100%',
    height: 200,
    title: 'Optional Cookbooks',
    columns: [{
        text: 'Role',
        width: 100,
        sortable: false,
        hideable: false,
        dataIndex: 'userID'
    }]
});

因为来自Chef Server的响应没有一致的dataIndex

如何向grid显示内容?

1 个答案:

答案 0 :(得分:0)

我对extJS一无所知所以这不是一个直接的答案,但是这也不是一个真正的厨师问题。基本上,Chef REST API不是为简单客户端直接使用而构建的。值得注意的是,您在那里展示的列表端点仅为每个食谱提供了名称(和URL,但这是无用的)。从那里你需要再做N个查询来获取每个版本的版本列表,然后可能需要N * M来获取每个版本的详细信息。在将生成的海量数据blob输入UI框架之前,通常会执行此操作。