Skip to content

lvl99/table-data-to-json

Repository files navigation

Table Data to JSON

Convert data which is in an array table format to a JSON object:

Imagine a table:

a b c
1 2 3
do re mi

Would be represented as table data like so:

[
  ["a", "b", "c"],
  [1, 2, 3],
  ["do", "re", "mi"]
]

If the first row is the header (X axis), then the output JSON would look like this:

[
  {
    "a": 1,
    "b": 2,
    "c": 3
  },
  {
    "a": "do"
    "b": "re",
    "c": "mi"
  }
]

If the first column (Y axis) is the header, then the output JSON would look like this:

[
  {
    "a": "b",
    "1": 2,
    "do": "re"
  },
  {
    "a": "c",
    "1": 3,
    "do": "mi"
  }
]

You can even output an object with multiple headers mapped as nested properties, like so:

Tom Dick Harriette
Age 24 32 40
Country NZ AU FR
const input = [
  ["", "Tom", "Dick", "Harriette"],
  ["Age", 24, 32, 40],
  ["Country", "NZ", "AU", "FR"],
];

const output = convertTableDataToJSON(input, {
  preset: "row.column",
});

/*
{
  "Tom": {
    "Age": 24,
    "Country": "NZ"
  },
  "Dick": {
    "Age": 24,
    "Country": "AU"
  },
  "Harriette": {
    "Age": 40,
    "Country": "FR"
  }
}
*/

Installation

  npm i table-data-to-json
  yarn add table-data-to-json

Usage

Import and use convertTableDataToJSON() within your project like so:

import convertTableDataToJSON from "table-data-to-json";

const output = convertTableDataToJSON(
  [
    ["a", "b", "c"],
    [1, 2, 3],
    ["do", "re", "mi"],
  ],
  {
    preset: "row",
  }
);

Options

Property Type Description
preset String Accepted values:
  • row
  • column
  • row.column
  • column.row
  • row.row
headers TableDataConfigHeaders In case the presets don't cover your use-case, you can specify the headers here.

Want to convert CSV and TSV data?

You can use other libraries like csv-parse to convert your CSV file/data to the array table data format, then run convertTableDataToJSON().

Want to convert XLSX data?

Use sister package xlsx-table-data-to-json which has some additional config and methods to handle sheets and convert cell data to usable formats.

This package uses xlsx to handle XLSX and CSV files/data.

Development

To download external dependencies:

  npm i

To run tests (using Jest):

  npm test
  npm run test:watch

Contribute

Got cool ideas? Have questions or feedback? Found a bug? Post an issue

Added a feature? Fixed a bug? Post a PR

License

Apache 2.0

About

Convert table data into JSON

Resources

License

Stars

Watchers

Forks

Packages

No packages published