Skip to content
/ hone Public

Convert CSV to automatically nested JSON

License

Notifications You must be signed in to change notification settings

chamkank/hone

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

77 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

hone

PyPI version PyPI license

Convert CSV to automatically nested JSON.

Table of Contents

Getting Started

Available as both a Python module and a command line tool.

Installation

pip install hone

Usage: Command Line

$ hone --help
usage: hone [-h] [-d [DELIMITERS]] [-s [SCHEMA]] csv_filepath json_filepath

positional arguments:
  csv_filepath          Specify the filepath for the file to read CSV data
                        from. To read from standard input, use a dash ("-") as
                        the value
  json_filepath         Specify the filepath for the file to output JSON data
                        to. To write to standard output, use a dash ("-") as
                        the value.

optional arguments:
  -h, --help            show this help message and exit
  -d [DELIMITERS], --delimiters [DELIMITERS]
                        Override the default delimiters for generating a
                        nested structure from column names. [DELIMITERS] must
                        be a Python-compatible list of strings. The default
                        value is [',', '_', ' '].
  -s [SCHEMA], --schema [SCHEMA]
                        Manually specify the schema that defines the structure
                        of the generated JSON, instead of having it
                        automatically generated. [SCHEMA] must be a valid JSON
                        object encoded as a string.

Usage: Python Module

import hone

optional_arguments = {
  "delimiters": [" ", "_", ","]
}
Hone = hone.Hone(**optional_arguments)
schema = Hone.get_schema('path/to/input.csv')  # nested JSON schema for input.csv
result = Hone.convert('path/to/input.csv', schema=schema)  # final structure, nested according to schema

Examples

You can view all examples of conversions in the examples directory.

CSV

name birth day birth month birth year reference reference name
Bob 7 May 1985 TRUE Smith
Julia 21 January 1997 FALSE N/A
Rick 12 June 1996 TRUE Clara

Generated JSON

[
  {
    "birth": {
      "day": "7",
      "month": "May",
      "year": "1985"
    },
    "name": "Bob",
    "reference": "TRUE",
    "reference name": "Smith"
  },
  {
    "birth": {
      "day": "21",
      "month": "January",
      "year": "1997"
    },
    "name": "Julia",
    "reference": "FALSE",
    "reference name": "N/A"
  },
  {
    "birth": {
      "day": "12",
      "month": "June",
      "year": "1996"
    },
    "name": "Rick",
    "reference": "TRUE",
    "reference name": "Clara"
  }
]

Development

Running tests

From the root directory of this repository, run python3 -m unittest to execute the entire test suite.

License

Hone is licensed under the MIT license.

About

Convert CSV to automatically nested JSON

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages