关联数组到表

时间:2017-09-14 13:39:38

标签: javascript arrays json

我有一个JSON(缩写版),如下所述。

{
    "jobs": [
        {"name": "Start", "value": "Ready"}, 
        {"name": "Date", "value": "2017-09-11"}, 
        {"name": "Crew", "value": "Crew 3"}]
}

我正在尝试从JSON读取值以在Tableau中生成表格。 每个 名称 元素都设置为列标题,我尝试将每个 值从JSON读取到正确的栏目。

我的显示应如下所示。

|开始|日期|船员|
|准备好了2017-09-11 |船员3 |

我在Taleau中创建架构,如下所示。

myConnector.getSchema = function (schemaCallback) {
    var cols = [
        { id : "start", alias : "Start", dataType: tableau.dataTypeEnum.string },
        { id : "date", alias : "Date", dataType: tableau.dataTypeEnum.datetime },
        { id : "crew", alias : "Crew", dataType: tableau.dataTypeEnum.string }];

我生成的JavaScript是:

var resp = response; // Response data from some API call - JSON as described above
var tableData = []; 
// Iterate over the JSON object
for (var i = 0, len = feat.length; i < len; i++) {
    tableData.push(
        { "start": resp[1]['value'] },
        { "date": resp[2]['value'] },
        { "crew": resp[3]['value'] });
        }

        table.appendRows(tableData);
        doneCallback();
    });
}

但是,在Tableau中生成此值时,每个值都在正确的列中,但每个值都在新行中。而不是1行中的所有值。

E.g。

|开始|日期|船员|

|准备好了 - | - |

| - | 2017-09-11 | - |

| - | - |船员3 |

如何遍历JSON并将每个值添加到tableData对象,以便所有值都在同一行?

1 个答案:

答案 0 :(得分:1)

您可以将所有内容放入对象数组中。从这里,您可以迭代值并将它们插入到表中。

const data = {"artists": [{"name": "Start", "value": "Ready"},{"name": "Date", "value": "2017-09-11"},{ "name": "Crew", "value": "artists Crew 1" }],"labor":[{"name": "Start", "value":"Ready"},{"name": "Date", "value": "2017-09-2"},{ "name": "Crew", "value": " labor Crew 2" }],accountant: [{"name": "Start", "value": "Ready"},{"name": "Date", "value": "2017-09-13"},{ "name": "Crew", "value": "account Crew 3" }],"somethingElse":[{"name": "Start", "value": "Ready"},{"name": "Date", "value": "2017-09-14"},{ "name": "Crew", "value": "somethingElse Crew 4"}],},
tableData =Object.entries(data).map(x => ({ Ready: x[1][0].value, Date: x[1][1].value, Crew: x[1][2].value }));
console.log(tableData);