使用Angular 6将命名对象的json数组转换为TS

时间:2018-06-05 04:45:05

标签: json typescript angular6

并提前感谢您阅读此问题(对此我表示道歉)。 考虑以下端点/ api / configuration / campaigns,它总是返回一个JSON对象数组,如下所示:

[{
    "CfgCampaign": {
        "callingLists": {
            "CfgCallingListInfo": {
                "callingListDBID": {
                    "value": 126
                }
            }
        },
        "DBID": {
            "value": 101
        },
        "name": {
            "value": "WI_Camp_1"
        },
        "state": {
            "value": 1
        },
        "campaignGroups": {
            "CfgCampaignGroupInfo": [{
                "groupDBID": {
                    "value": 5
                }
            }, {
                "groupDBID": {
                    "value": 5
                }
            }]
        },
        "scriptDBID": {
            "value": 0
        },
        "tenantDBID": {
            "value": 101
        }
    }
}, 
...
, {
    "CfgCampaign": {
        "callingLists": {
            "CfgCallingListInfo": {
                "callingListDBID": {
                    "value": 168
                }
            }
        },
        "DBID": {
            "value": 132
        },
        "name": {
            "value": "DBT_Campaign_015"
        },
        "description": {
            "value": "DEBT"
        },
        "state": {
            "value": 1
        },
        "scriptDBID": {
            "value": 0
        },
        "tenantDBID": {
            "value": 101
        }
    }
}]

我需要将此响应映射到我为此目的创建的TypeSript接口数组。 知道我只对每个对象的信息子集感兴趣,我创建了多个接口来保存数据。 主要的是CfgCampaign--代表主要对象。我还创建了一个CfgCampaignGroupInfo接口(正如您在JSON响应中看到的,它也是一个JSON对象)和CfgCallingListInfo接口。

现在我正在尝试将此响应映射到各自的TypeScript表示中,严重的是,我对如何执行此操作感到困惑。

以下是CfgCampaign界面的基本版本:

import { CfgCampaignGroupInfo } from "src/app/models/CfgCampaignGroupInfo";
import { CfgCallingListInfo } from "src/app/models/CfgCallingListInfo";

export interface CfgCampaign {
    name: string;
    dbid: number;
    campaignGroups: CfgCampaignGroupInfo[];
    callingListsInfo: CfgCallingListInfo[];
}

任何人都可以指出我正确的方向将这个JSON数组映射到相应的TS接口,考虑到对象的嵌套特性(并且还有点夸大它,有时候有嵌套数组的事实 - 例如" callingLists"可以是单个对象还是数组??

到目前为止,我已设法独立访问值,例如:

.subscribe(campaignsList => this.campaignsList = campaignsList['0']['CfgCampaign']['DBID']['value']);

非常感谢任何帮助。

干杯,

一个。

0 个答案:

没有答案