0

我处于一种情况,我必须设计一个具有已定义架构的对象映射器,即我将得到一个包含对象数组的响应,该数组是这样的对象映射架构。

[
{
"fieldToMap":"entityName",
"fieldName":"name"
},
{
"fieldToMap":"entityNumber",
"fieldName":"number"
}
]

当我点击任何 api 端点并得到这样的响应时,

[
{
"name":"something",
"number":"something"
},
{
"name":"something",
"number":"something"
}
]

我必须将它映射到一个对象并创建一个像这样的 nw 对象

[
{
"entityName":"something",
 "entityNumber":"something"
},
{
"entityName":"something",
 "entityNumber":"something"
}
]

如何解决这个问题?这是循环响应并用模式中提供的键替换响应键的好方法,还是有其他方法可以使用?任何帮助将不胜感激。谢谢

4

2 回答 2

1

像这样的东西

var schema = [
    {
        "fieldToMap":"entityName",
        "fieldName":"name"
    },
    {
        "fieldToMap":"entityNumber",
        "fieldName":"number"
    }
]

var response = [
    {
        "name":"something",
        "number":"something"
    },
    {
        "name":"something",
        "number":"something"
    }
];

var result = mapObject(response, schema);

function mapObject(data, schema) {
    return data.map(function(el) {
        var obj = {};
        schema.forEach(function(s) {
            obj[s.fieldToMap] = el[s.fieldName];
        });
        return obj
    })
}
于 2017-10-23T05:56:57.873 回答
0

试试这样:

getAll() {
    return this.http.get('sample.json')
        .map(res => <SchemaModel[]>res.json());
}
于 2017-10-23T05:56:32.357 回答