我将要编写一个有角度的应用程序。它从api接收答案。这个答案内部是一个用字符串索引的数组(索引签名)。如何将该数组映射到常规数组?
api看起来像这样
Dim dt As DataTable = myDataSet.Tables("mytable")
Dim sum As Integer = Convert.ToInt32(dt.Compute("SUM(columnname)", "Columname = a OR Columname = b OR Columname = c OR Columname = c))
我想将它映射为一个看起来像这样的对象
{
"Information": {
"Created": "2019-04-25",
"Version": "1.2"
},
"Files": {
"2019-04-26": {
'name': 'file1',
'size': 5,
},
"2019-04-25": {
'name': 'file2',
'size': 3,
},
...
}
}
在这里我想给出答案
export class Model {
'Information': {
'Created': string,
'Version': string,
};
'Files': [{
'date': Date,
'name': string,
'size': number,
}];
}
答案 0 :(得分:0)
我还没有测试过任何一个,但是总而言之,for循环检索对象data.File
的所有键,并且您可以通过该键访问该对象。
getdata(url): void {
this.http.get<>(url).subscribe((response: any) => {
const model: Model = new Model();
model.Files = [];
if (response.Information) {
const information: any = response.Information;
if (information.Created && information.Version) {
model.Information = {
'Created': information.Created,
'Version': information.Version
};
}
}
for (const date in data) {
if (data.File.hasOwnProperty(date)) {
const file: any = data.File[date];
model.Files.push({
'date': date,
'name': file.name,
'size': file.size
});
}
}
});
}
答案 1 :(得分:0)
Object.keys(o.Files)
.map(function(k ) {
return {date: k, name: o.Files[k].name, size: o.Files[k].size}
});
答案 2 :(得分:0)
它应该看起来像这样:
data: Array<Data>;
getData() {
this.http.get(`url`).subscribe((data) => {
this.data = data.map(item => {
const output = {};
output.information = item.information;
output.files = Object.keys(item.files).map(key => {
return {
date: new Date(key),
name: item.files[key].name,
size: item.files[key].size
};
});
return output;
});
});
}