我有一个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对象,以便所有值都在同一行?
答案 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);