I am new to Node.js. My requirement is, I need to parse a JSON and export the data into Excel file with all the fields in the JSON.
My JSON is as follows:
You can do it with AlaSQL javascript library with special SEARCH
operator, which is designed to do search for nested objects. See the code below, which generates the Excel file with your structure (I did not include all fields):
var alasql = require('alasql');
var data = [{
"id": 1255,
"title": "The Brain and Nervous System (LS1.D)",
// ...
},
{
"id": 1256,
// ...
}];
// Here is search query
alasql('SEARCH / AS @a \
UNION ALL( \
introduction AS @b \
resources / AS @c \
RETURN(@a->id AS id, @a->title AS title, @a->description AS description, \
@a->keyTerms AS keyTerms, @a->visible AS visible, \
@b->id as [introduction.id], @b->title as [introduction.title], \
@c->id AS [introduction.resources.id], \
@c->contentItem->id AS [introduction.resources.contentItem.id] \
) \
, \
objectives AS @b \
resources / AS @c \
RETURN(@a->id AS id, @a->title AS title, @a->description AS description, \
@a->keyTerms AS keyTerms, @a->visible AS visible, \
@b->id as [objectives.id], @b->title as [objectives.title], \
@c->id AS [objectives.resources.id], \
@c->contentItem->id AS [objectives.resources.contentItem.id] \
) \
) INTO XLSX("test411.xlsx",{headers:true})\
FROM ?',[data]);
Some explanations:
You also need to add other columns to finish this query. The sample file will be uploaded here in two hours.
You also can remove this line from the source code: INTO XLSX()
, and alasql()
will return a JSON object with all properties:
var res = alasql('SEARCH / AS @a UNION ALL(...) FROM ?',[data]);
console.log(res);
Here is the jsFiddle example