2017-01-09 50 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