我有一个如下所述的 JSON(缩写版本)。
{
"jobs": [
{"name": "Start", "value": "Ready"},
{"name": "Date", "value": "2017-09-11"},
{"name": "Crew", "value": "Crew 3"}]
}
我正在尝试从 JSON 读取值以在 Tableau 中生成一个表。 每个 name 元素都设置为列标题,我尝试从 JSON 读取每个 value 值正确的列。
我的显示应如下所示。
<强>|开始|日期 |船员 |
|准备好 | 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 行中的所有值。
例如
<强>|开始|日期 |船员 |
|准备好 | - | - |
| - | 2017-09-11 | - |
| - | - |船员 3 |
如何循环遍历 JSON 并将每个值添加到 tableData 对象,以便所有值都位于同一行?
最佳答案
您可以将所有内容放入对象数组中。从这里您可以迭代这些值并将它们插入到表中。
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);
关于javascript - 关联数组到表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46220715/