csv2json

TL;DR

I shared csv2json.

From time to time I find myself with a CSV file with data that I’d like to manipulate/use with some program that is comfortable with JSON, like e.g. jq. Other times I need the reverse, e.g. I’d like to explore an array of JSON-encoded data with a program comfortable with spreadsheets/Comma Separated Value files.

I suspect there are a ton of such programs around, but why not reinvent this wheel on a Sunday afternoon, complete with overkill features I’m not going to need and shiny documentation?

So enter csv2json! Examples from the documentation:

# CSV to JSON using standard filehandles
$ csv2json <file.csv >file.json

# inputs and outputs can be specified explicitly
$ csv2json -i file.csv -o file.json

# also to explicitly set input and output with file name "-"
$ cat file.csv | csv2json -i - -o - > file.json

# the CSV can be provided as a command-line parameter
$ csv2json --csv "$csv_string"

# separator is ";", can be changed with a percent-encoded string
$ csv2json --sep %2C     # ","

# the end-of-line character can be set with a percent-encoded string
$ csv2json --eol %0D%0A  # "\r\n"

# the inverse operation is possible too
$ csv2json --inverse -i file.json -o file.csv

# this can be triggered automatically with proper naming
$ ln -s /path/to/csv2json /path/to/json2csv
$ json2csv -i file.json -o file.csv

# the JSON string can be provided as a command-line parameter
$ csv2json --inverse --json "$json_string"

For installation, I’ll probably go with the bundled version that includes module Text::CSV_PP:

cd ~/bin
curl -Lo csv2json \
   https://codeberg.org/polettix/csv2json/raw/branch/main/csv2json.bundle
chmod +x csv2json
ln -s csv2json json2csv

The last command creates a link that enables the inverse option out of the box, for better readability and easier typing.

At this point… stay safe and that’s all folks!


Comments? Octodon, Twitter, GitHub, Reddit, or drop me a line!