2017-01-09 17 views
0

Я работаю в node.js. Я получаю объект JSON из службы с некоторых полей говорят:Как создать объект json из предопределенного шаблона json в node.js

{ 
    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». –

ответ

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.

Смежные вопросы