有哪些JavaScript对象到对象映射库?

2022-06-26 00:00:00 mapping javascript

我目前正在进行一个大型的JavaScript项目,我正在努力将传入的JSON数据(从后端)映射到我自己的JavaScript对象。

我使用的是Knokout JavaScript MVVM框架,虽然它包含一个mapping plugin,但它不允许我实际重新映射属性。我之所以想做到这一点,是因为传入的JSON数据太细粒度了,我想‘扁平化’我的JS对象。下面是一个示例。

正在导入数据。

Object : {
    Description: {
        Id : 1,
        Title : 'ProductX'
    },
    Price : {
        Last : 12,
        Currency : 3
    }
}

我想将其重新映射/展平为:

var mappedObject = {
    id : 1,
    title: 'ProductX',
    price : 12,
    currency : 3
}

因此我想提供一个映射配置,详细说明哪些传入属性应映射到哪些传出属性。与正在配置的Dozer非常相似。

我的问题是:是否有能够实现我想要实现的功能的库,或者这是否需要我构建自己的库?


解决方案

实际上,Knokoutjs映射插件允许您这样做:

ko.mapping.fromJS调用中,您可以提供一个映射对象,该对象将用于映射包含属性...

var mapper = {
    create: function(options){
        return { name: ko.observable(options.data.name) };
    }
};

这意味着将此映射器与映射插件一起使用时,每个对象都将被展平为仅包含其名称作为可观察对象的对象。

您可以这样使用它:

var viewModel = ko.mapping.fromJS({id: 1, name: "a", desc: "b"}, mapper);

在这种情况下,viewModel将只有一个属性名称。

您可以在官方文档here中阅读有关此功能的更多信息。

相关文章