Skip to content

Allow converting newline-delimited json via flag #19

@vergenzt

Description

@vergenzt

What I'd like

Example input:

{"a":1,"b":2,"c":3}
{"a":4,"b":5,"c":6}
{"a":7,"b":8,"c":9}

Desired output:

a,b,c
1,2,3
4,5,6
7,8,9

Implementation ideas

Option 1. Only newline-delimited json

  1. Add -n/--ndjson.
  2. When passed, then read lines of input and parse each line as JSON.
  3. Apply --path resolution to each parsed line.
  4. Then handle the list of (--path-transformed) JSON-parsed lines as if they were a single JSON array.

Option 2. Accept "JSON streams"

  1. Add -s/--stream. (Or maybe still call the flag -n/--ndjson but do this behavior?)
  2. When passed, then read all input, and treat it as an (optionally whitespace-separated) concatenated stream of JSON values.
  3. Apply --path resolution to each parsed JSON value.
  4. Then handle the list of (--path-transformed) JSON-parsed values as if they were a single JSON array.

Thoughts? I'm open to implementing but figured I'd run it by you first.

I often finding myself converting trying to JSON to CSV and your tool is my go-to for its speed and simplicity! But it'd be nice to not have to wrap lines of JSON objects into an array before converting.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions