ETOOBUSY 🚀 minimal blogging for the impatient
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!