2017-09-14 11 views
0

私は以下のようにJSON(略称)を持っています。テーブルへの連想配列

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

私はTableauでテーブルを生成するために、JSONから値を読み取るしようとしています。 各要素は、列ヘッダーとして設定され、私は正しい列に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(); 
    }); 
} 

、これはタブローで生成されたときに、各値の値が正しい列であるが、各値の値は新しい行です。 1行のすべての値ではありません。

など。

|スタート|日付|乗組員|

|レディ| - | - |

| - | 2017-09-11 | - |

| - | - |乗組員3 |

すべての値が同じ行になるように、JSONをループして各値をtableDataオブジェクトに追加するにはどうすればよいですか?

+0

私は推測しているが、あなたの出力から、あなたがしてデータを追加し、列に一致するように設定されたすべてのキーを持つオブジェクトが必要になる場合がありますようだ: '{開始:[チェック] 、date: 'this'、crew: 'row'} '、あなたはフィドルを作ることができますか? – maioman

+0

なぜ値を1つのオブジェクトとしてではなく別々にプッシュしていますか? – Wainage

+0

{start:resp [1] ['value']} {"date":resp [2] ['value']} {"crew":resp [3] ['値']})); } resp [2] ['value'] "crew":resp [3] ['value']値']}); } ' – Thijs

答えて

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);