3.0.2 • Published 8 months ago

@runnerty/executor-json2csv v3.0.2

Weekly downloads
1
License
MIT
Repository
github
Last release
8 months ago

NPM version Downloads

Executor for Runnerty: JSON2CSV

Installation:

Through NPM

npm i @runnerty/executor-json2csv

You can also add modules to your project with runnerty-cli

npx runnerty-cli add @runnerty/executor-json2csv

This command installs the module in your project, adds example configuration in your config.json and creates an example plan of use.

If you have installed runnerty-cli globally you can include the module with this command:

rty add @runnerty/executor-json2csv

Configuration sample:

Add in config.json:

{
  "id": "json2csv_default",
  "type": "@runnerty-executor-json2csv"
}

Plan sample:

Add in plan.json:

JSON Example

[
  {
    "planet": "Earth",
    "radius": 6371,
    "satellites": [
      {
        "name": "moon",
        "radius": 1737
      }
    ]
  },
  {
    "planet": "Mars",
    "radius": 3389,
    "satellites": [
      {
        "name": "phobos",
        "radius": 11267
      },
      {
        "name": "deimos",
        "radius": 6.2
      }
    ]
  }
]

Example 1:

{
  "id": "json2csv_default",
  "inputPath": "./planets.json",
  "outputPath": "./planets.csv"
}
CSV Output
"planet","radius","satellites"
"Earth",6371,"[{""name"":""moon"",""radius"":1737}]"
"Mars",3389,"[{""name"":""phobos"",""radius"":11267},{""name"":""deimos"",""radius"":6.2}]"

Example 2:

{
  "id": "json2csv_default",
  "inputPath": "./planets.json",
  "outputPath": "./planets.csv",
  "options": {
    "fields": ["planet", "radius", "satellites.name", "satellites.radius"]
  },
  "transforms": {
    "unwind": { "paths": ["satellites"] }
  }
}
CSV Ouput
"planet","radius","satellites.name","satellites.radius"
"Earth",6371,"moon",1737
"Mars",3389,"phobos",11267
"Mars",3389,"deimos",6.2

Full params example:

{
  "id": "json2csv_default",
  "inputPath": "./input.json",
  "input": "@GV(MY_JSON)",
  "outputPath": "./output.csv",
  "options": {
    "fields": ["field1", "field2", "field3"],
    "defaultValue": "NULL",
    "header": true,
    "escapedQuote": "",
    "delimiter": ";",
    "eol": "\r\n",
    "excelStrings": true,
    "includeEmptyRows": true,
    "withBOM": true
  },
  "transforms": {
    "unwind": { "paths": ["items", "items.items"], "blankOut": true },
    "flatten": { "objects": true, "arrays": true, "separator": "_" }
  }
}

Params

Options

OptionDescription
fieldsList of fields to process. Defaults to field auto-detection.
defaultValueDefault value to use for missing fields.
quoteCharacter(s) to use as quote mark. Defaults to '"'.
delimiterCharacter(s) to use as delimiter. Defaults to ','. (default: ",")
escapedQuoteCharacter(s) to use as a escaped quote. Defaults to a double quote, '""'.
eolCharacter(s) to use as End-of-Line for separating rows. Defaults to '\n'. (default: "\n")
excelStringsWraps string data to force Excel to interpret it as string even if it contains a number.
headerBoolean to Enable/Disable the column name header. (Enabled by defaults)
includeEmptyRowsBoolean to Includes empty rows in the resulting CSV output.
withBOMBoolean to Includes BOM character at the beginning of the CSV.

Transforms

OptionDescription
unwindCreates multiple rows from a single JSON document similar to MongoDB unwind.
- pathsUnwind fields path.
- blankOutWhen unwinding, blank out instead of repeating data. Defaults to false. (default: false)
flattenNested javascript objects into a single level object.
- objectFlatten nested objects. Defaults to false. (default: false)
- arraysFlatten nested arrays. Defaults to false. (default: false)
- separatorFlattened keys separator. Defaults to '.'. (default: ".")

More information:

This executor is a wrapper of the module json2csv (zemirco), for more information consult the website of the json2csv.