Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
A gem useful for converting CSV files to JSON from command-line
tag: v0.1.0

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.

= csv2json

Clients were sending me XLS files, but my webs consume JSON. So I needed to convert them to JSON easily from command-line. Tried to google for solution and surprisingly enough nothing solid existed.

== Solution

  • export XLS as a CSV file (I use for this)
  • run csv2json file.csv > file.json
  • there is no step 3

=== Sample

note: make sure your XLS table has the first row with column names

This CSV file:


gets turned into this JSON:

    "thumbwidth": 75,
    "imgsrc": "paris_01.jpg",
    "thumbsrc": "paris_01.jpg",
    "height": 262,
    "imgpath": "images/",
    "thumbheight": 56,
    "thumbpath": "thumbnails/",
    "width": 350
    "thumbwidth": 75,
    "imgsrc": "paris_02.jpg",
    "thumbsrc": "paris_02.jpg",
    "height": 350,
    "imgpath": "images/",
    "thumbheight": 56,
    "thumbpath": "thumbnails/",
    "width": 262

=== Installation

sudo gem install csv2json --source

=== Usage

Usage: csv2json [INPUT] [OPTIONS]

Specific options:
    -o, --output FILE                Write output to a file
    -h, --help                       Show this message
    -v, --version                    Show version

=== Alternative usage

common usage is csv2json file.csv > file.json

csv2json should behave like proper unix command-line utility working with pipes, redirects, etc.

cat file.csv | csv2json | gzip > file.json.gz

=== Usage as a library

with files

require 'csv2json''input.csv', 'r') do |input|'output.json', 'w') do |output|
        CSV2JSON.parse(input, output)

or in-memory

require 'csv2json'

input =
output =
CSV2JSON.parse(input, output)

output.pos = 0

== Want to contribute?

  • Fork the project.
  • Make your feature addition or bug fix.
  • Add tests for it. This is important so I don't break it in a future version unintentionally.
  • Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
  • Send me a pull request. Bonus points for topic branches.

== Copyright

Copyright (c) 2009 Antonin Hildebrand. See LICENSE for details.

Check out

Something went wrong with that request. Please try again.