2017-01-09 18 views
0

我在node.js中工作。我从服务中获得一个JSON对象,其中一些字段说:如何从node.js中预定义的json模板创建json对象

{ 
    user: { 
    firstname : 'John', 
    lastname : 'Doe', 
    emailaddress : '[email protected]', 
    contactnumber: '9876458910' 
    } 
} 

以上JSON数据是从一个excel/csv文件提取并转化为JSON数据。 但存储该数据到数据库的另一种格式说另一个服务的JSON结构,

{ 
    user : {  
    name: { 
     firstname : 'John', 
     lastname : 'Doe' 
    }, 
    emailaddress : [{ 
     emailaddress : '[email protected]' 
    }], 
    conatactdetails:[{ 
     contactnumber : '9876458910' 
    }] 
    } 
} 

是否有可能实现这种转换

+1

你可以使用一些库,如** lodash ** https://lodash.com/docs/3.10.1#pluck,你可以很容易地转换任何类型的json与你需要的json。请参阅文档中的_.pluck等函数。 –

+0

或者您可以使用[map](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map)。 –

+0

您的问题是“如何”,如在标题中,或在问题中“是否可能”?无论如何,是的,这是可能的。按照所需的格式编写一个对象,并用“obj.user.firstname”中的引用替换固定值(如“John”)。 – 2017-01-09 13:45:30

回答

0

这不是漂亮,但这会做:

function constructUserForDb(data) { 
    return Object.keys(data.user).reduce(function(acc, key) { 
    var value = data.user[key]; 
    if (key === 'firstname' || key === 'lastname') { 
     acc['name'] = acc['name'] || {}; 
     acc['name'][key] = value; 
    } 
    if (key === 'emailaddress') { 
     acc[key] = [{ emailaddress: value }]; 
    } 
    if (key === 'contactnumber') { 
     acc['contactdetails'] = [{ contactnumber: value }]; 
    } 
    return acc; 
    }, {}); 
}; 

Working jsfiddle here