Source: natural-language-classifier/json-training-to-csv.js

/**
 * Copyright 2015 IBM Corp. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 */

'use strict';

var stringify = require('csv-stringify');

function toCSVArray(data) {
  if (data.text && data.classes && data.classes.length > 0)
    {return [data.text].concat(data.classes);}
  else
    {throw Error('Invalid training_data format, it needs to be: '+
      '[{ text: "my-text", classes:["my-class1", "my-class2",...]}, {}, ...]');}
}

/**
 * IF traning is json, convert it to csv.
 * @param  {Object[]} jsonData the training_data as a json array
 * @param  {Function} cb the error first callback
 */
module.exports = function toCSV(training, cb) {
  if (Array.isArray(training)) {
    try {
      stringify(training.map(toCSVArray), cb);
    } catch (e) {
      cb(e);
    }
  } else
    {cb(null, training);}
};