As part of the Emacs minor mode I'm working on I've created a useful function to turn json into Org tables while maintaining the linkage of nested structures. The is cleverly named json-to-org-table.

Why?

Json is a great format for programming and parsing structures but a less good language for human consumption. I created this tool so I could interact with APIs and have a human readable format (and one that exports nicely too!)

What's that look like?

Much of the tool is covered on the github README.md. Here's an example of using it in org mode to build a set of linked tables

As JSON

curl -X GET "https://archive.org/wayback/available?url=noonker.github.io"
{
    "archived_snapshots": {
        "closest": {
            "available": true,
            "timestamp": "20201209030058",
            "status": "200",
            "url": "http://web.archive.org/web/20201209030058/https://noonker.github.io/"
        }
    },
    "url": "noonker.github.io"
}

… and as linked tables

/images/linked_tables.png

In an org buffer it would look like this:

#+name: requester
#+begin_src bash :results drawer
curl -X GET "https://archive.org/wayback/available?url=noonker.github.io"
#+end_src

#+RESULTS:
:results:
{"url": "noonker.github.io", "archived_snapshots": {"closest": {"url": "http://web.archive.org/web/20201209030058/https://noonker.github.io/", "status": "200", "timestamp": "20201209030058", "available": true}}}
:end:


#+name: to-json-table
#+begin_src emacs-lisp :var str=requester() :results raw
(json-to-org-table-parse-json-string str)
#+end_src

#+RESULTS: to-json-table
| key                | value              |
|--------------------+--------------------|
| archived_snapshots | [[archived_snapshots]] |
| url                | noonker.github.io  |

#+name: archived_snapshots
| key     | value                      |
|---------+----------------------------|
| closest | [[closest_archived_snapshots]] |

#+name: closest_archived_snapshots
| key       | value                                                                |
|-----------+----------------------------------------------------------------------|
| timestamp | 20201209030058                                                       |
| available | t                                                                    |
| status    | 200                                                                  |
| url       | http://web.archive.org/web/20201209030058/https://noonker.github.io/ |

Bugs

I'm sure there are bugs- Open up a bug or PR in the repo.