Awesome json2dir Awesome

A curated list of implementations, ports, rewrites and heresies of json2dir.

One JSON object in. One directory tree out. Many languages, many opinions.

Website · RFC J2D-1 · Conformance suite · Manifesto

Projects Languages Languages Languages Languages Languages Languages License: CC0-1.0 PRs Welcome


{                                              .
  "greeting": "Hello, world!",                 ├── greeting      "Hello, world!"
  "dir": {                                     ├── dir/
    "subfile": "Content.\n",       json2dir    │   ├── subfile   "Content.\n"
    "subdir": {}                  ─────────▶   │   └── subdir/
  },                                           ├── symlink ──▶ target path
  "symlink": ["link", "target path"],          └── script*       #!/bin/sh …
  "script": ["script", "#!/bin/sh\necho Howdy!"]
}

Contents

The format

Every implementation in this list speaks the same conversion scheme, defined by the original json2dir and specified in RFC J2D-1:

JSON value Filesystem entry
Object Directory, populated recursively
String Regular file with exactly that content
["link", "target"] Symbolic link pointing to target
["script", "content"] File with the executable bit set

The root of the document must be an object. See RFC J2D-1 for the full rules.

Specification and tests

Reference implementation

Ports and rewrites

Alternative takes

Inverse tools

Tooling

Rebuttals

Projects that exist to explain why json2dir should not.

Articles and usage

At a glance

Project Language Direction License
json2dir Rust JSON → dir ISC
json2dir-zig Zig JSON → dir GPL-3.0
json2dir-scheme Guile Scheme JSON → dir ISC
json2dir-cs C# JSON → dir Unlicense
json2dir-msbuild MSBuild JSON → dir Unlicense
json2dir-nix Nix JSON → dir ISC
json2dir-lean Lean 4 JSON → dir WTFPL
json2dir-llvm-IR LLVM IR JSON → dir ISC
json2dir-F- F* JSON → dir ISC
json2dir-agda Agda JSON → dir ISC
json2dir-ats ATS2 JSON → dir ISC
json2dir-bimbo bimbo-lang → LLVM IR JSON → dir ISC
json2dir-hs Haskell JSON → dir BSD-3-Clause
json2dir-thesis Typst JSON → dir ISC
json2dir-uiua Uiua JSON → dir ISC
json2dir-ludka ludka-trade → LLVM IR JSON → dir ISC
nuon2dir Nushell Nushell record / JSON → dir ISC
json2llm Go + LLM JSON → LLM → dir None specified
kube-operator2dir Go + Kubernetes CR → node dirs Apache-2.0 (per README)
zakon2dir Russian legalese JSON ⇄ dir, by law GPL-3.0
brainfuck2dir Brainfuck + Zig brainfuck → JSON → dir GPL-3.0
json2philosophy Russian prose JSON → Being GPL-3.0
voice2dir Python + whisper voice → JSON → dir GPL-3.0
json2dir-syscall C, Linux kernel module JSON → dir, in kernel space None specified
json2dir (novella) Russian prose J/son → director None specified
json2slop Shell + Docker JSON → any backend → dir None specified
json2dir-tester C# runs every implementation None specified
dir2json Rust dir → JSON GPL-3.0
json2json Rust JSON → JSON GPL-3.0
dir2dir none yet dir → dir GPL-3.0
json2dir-ada Ada JSON → dir MIT
json2dir-aheui Aheui JSON → dir (launcher) MIT
json2dir-algol60 ALGOL 60 JSON → dir (launcher) MIT
json2dir-algol68 ALGOL 68 JSON → dir (launcher) MIT
json2dir-ansible Ansible JSON → dir MIT
json2dir-aot C#, .NET 8 Native AOT JSON → dir MIT
json2dir-apl APL JSON → dir (launcher) MIT
json2dir-arnoldc ArnoldC JSON → dir (launcher) MIT
json2dir-asm x86-64 assembly (JWasm) JSON → dir MIT
json2dir-awk AWK JSON → dir (launcher) MIT
json2dir-bash Bash JSON → dir (launcher) MIT
json2dir-basic BASIC (FreeBASIC) JSON → dir MIT
json2dir-bat cmd.exe batch JSON → dir MIT
json2dir-bcpl BCPL JSON → dir (launcher) MIT
json2dir-befunge Befunge-98 JSON → dir (launcher) MIT
json2dir-bqn BQN JSON → dir MIT
json2dir-braincopter Braincopter JSON → dir (launcher) MIT
json2dir-brainfuck Brainfuck JSON → dir (launcher) MIT
json2dir-brainloller Brainloller JSON → dir (launcher) MIT
json2dir-c17 C17 JSON → dir MIT
json2dir-c23 C23 JSON → dir MIT
json2dir-c89 ANSI C (C89) JSON → dir MIT
json2dir-cforall Cforall JSON → dir MIT
json2dir-checkedc Checked C JSON → dir MIT
json2dir-chef Chef JSON → dir (launcher) MIT
json2dir-chez Chez Scheme JSON → dir MIT
json2dir-cil hand-written CIL (ilasm) JSON → dir MIT
json2dir-cilk Cilk (OpenCilk) JSON → dir MIT
json2dir-clojure Clojure JSON → dir MIT
json2dir-cmake CMake script JSON → dir MIT
json2dir-cobol COBOL JSON → dir MIT
json2dir-commonlisp Common Lisp JSON → dir MIT
json2dir-compcert C, compiled with CompCert JSON → dir MIT
json2dir-cow COW JSON → dir (launcher) MIT
json2dir-cpp C++ JSON → dir MIT
json2dir-crystal Crystal JSON → dir MIT
json2dir-d D JSON → dir MIT
json2dir-dafny Dafny JSON → dir MIT
json2dir-dart Dart JSON → dir MIT
json2dir-eiffel Eiffel JSON → dir MIT
json2dir-elisp Emacs Lisp JSON → dir MIT
json2dir-elixir Elixir JSON → dir MIT
json2dir-emojicode Emojicode JSON → dir MIT
json2dir-erlang Erlang JSON → dir MIT
json2dir-false FALSE JSON → dir (launcher) MIT
json2dir-fennel Fennel JSON → dir MIT
json2dir-fish ><> (Fish) JSON → dir (launcher) MIT
json2dir-forth Forth JSON → dir MIT
json2dir-fortran Fortran JSON → dir MIT
json2dir-fractran Fractran JSON → dir (launcher) MIT
json2dir-freepascal Free Pascal JSON → dir MIT
json2dir-fsharp F# JSON → dir MIT
json2dir-gleam Gleam JSON → dir MIT
json2dir-gnuc GNU C JSON → dir MIT
json2dir-go Go JSON → dir MIT
json2dir-groovy Groovy JSON → dir MIT
json2dir-hare Hare JSON → dir MIT
json2dir-haskell Haskell JSON → dir MIT
json2dir-hexagony Hexagony JSON → dir (launcher) MIT
json2dir-holyc HolyC JSON → dir MIT
json2dir-idris2 Idris 2 JSON → dir MIT
json2dir-intercal INTERCAL JSON → dir (launcher) MIT
json2dir-j J JSON → dir MIT
json2dir-janet Janet JSON → dir MIT
json2dir-java Java JSON → dir MIT
json2dir-jq jq JSON → dir (launcher) MIT
json2dir-js plain JavaScript JSON → dir MIT
json2dir-jscript JScript (Wine) JSON → dir MIT
json2dir-jsonnet Jsonnet JSON → dir (launcher) MIT
json2dir-jsonscript JSONScript JSON → dir MIT
json2dir-julia Julia JSON → dir MIT
json2dir-k K JSON → dir (launcher) MIT
json2dir-koka Koka JSON → dir MIT
json2dir-kotlin Kotlin JSON → dir MIT
json2dir-kr K&R C JSON → dir MIT
json2dir-ksh ksh93 JSON → dir MIT
json2dir-logo Logo JSON → dir (launcher) MIT
json2dir-lolcode LOLCODE JSON → dir (launcher) MIT
json2dir-lua Lua 5.4 JSON → dir (launcher) MIT
json2dir-luajit LuaJIT JSON → dir MIT
json2dir-luatex LuaTeX JSON → dir (launcher) MIT
json2dir-malbolge Malbolge Unshackled JSON → dir (launcher) MIT
json2dir-mercury Mercury JSON → dir MIT
json2dir-modula2 Modula-2 JSON → dir MIT
json2dir-mojo Mojo JSON → dir MIT
json2dir-neovim Neovim Lua JSON → dir MIT
json2dir-nim Nim JSON → dir MIT
json2dir-njs nginx njs + WebDAV JSON → dir MIT
json2dir-objc Objective-C JSON → dir MIT
json2dir-ocaml OCaml JSON → dir MIT
json2dir-octave MATLAB/Octave JSON → dir MIT
json2dir-octave-pure MATLAB/Octave, without Java JSON → dir MIT
json2dir-odin Odin JSON → dir MIT
json2dir-ook Ook! JSON → dir (launcher) MIT
json2dir-perl Perl JSON → dir MIT
json2dir-php PHP JSON → dir MIT
json2dir-piet Piet JSON → dir (launcher) MIT
json2dir-pikachu Pikachu JSON → dir (launcher) MIT
json2dir-pli PL/I JSON → dir MIT
json2dir-pony Pony JSON → dir MIT
json2dir-prolog Prolog JSON → dir MIT
json2dir-puppet Puppet JSON → dir MIT
json2dir-purescript PureScript JSON → dir MIT
json2dir-pwsh PowerShell JSON → dir MIT
json2dir-python Python JSON → dir MIT
json2dir-r R JSON → dir MIT
json2dir-racket Racket JSON → dir MIT
json2dir-raku Raku JSON → dir MIT
json2dir-rexx REXX JSON → dir MIT
json2dir-roc Roc JSON → dir MIT
json2dir-rockstar Rockstar JSON → dir (launcher) MIT
json2dir-rocq Rocq (extracted to OCaml) JSON → dir MIT
json2dir-ruby Ruby JSON → dir MIT
json2dir-scala Scala JSON → dir MIT
json2dir-sed sed JSON → dir (launcher) MIT
json2dir-shakespeare the Shakespeare Programming Language JSON → dir (launcher) MIT
json2dir-smalltalk Smalltalk JSON → dir MIT
json2dir-sml Standard ML JSON → dir MIT
json2dir-snobol4 SNOBOL4 JSON → dir (launcher) MIT
json2dir-sqlite SQL (SQLite) JSON → dir MIT
json2dir-subleq Subleq JSON → dir (launcher) MIT
json2dir-swift Swift JSON → dir MIT
json2dir-systemverilog SystemVerilog JSON → dir (launcher) MIT
json2dir-taxi Taxi JSON → dir (launcher) MIT
json2dir-tcl Tcl JSON → dir MIT
json2dir-thue Thue JSON → dir (launcher) MIT
json2dir-tla TLA+ (TLC) JSON → dir (launcher) MIT
json2dir-ts TypeScript JSON → dir MIT
json2dir-unicon Unicon (Icon) JSON → dir MIT
json2dir-unlambda Unlambda JSON → dir (launcher) MIT
json2dir-v V JSON → dir MIT
json2dir-vala Vala JSON → dir MIT
json2dir-vbnet VB.NET JSON → dir MIT
json2dir-vbs VBScript (Wine) JSON → dir MIT
json2dir-velato Velato JSON → dir (launcher) MIT
json2dir-vhdl VHDL JSON → dir (launcher) MIT
json2dir-vim Vim script JSON → dir (launcher) MIT
json2dir-wasm hand-written WebAssembly (WASI, Bun) JSON → dir MIT
json2dir-whitespace Whitespace JSON → dir (launcher) MIT
json2dir-why3 WhyML (Why3, extracted to OCaml) JSON → dir MIT
json2dir-xslt XSLT 3.0 JSON → dir (launcher) MIT
json2dir-zsh zsh JSON → dir MIT

Wanted

Implementations that have been requested but do not exist yet. Be the first:

Contributing

Wrote your own json2dir? Run the conformance suite against it, then open a pull request. Read the contribution guidelines first.


CC0

To the extent possible under law, the contributors have waived all copyright and related rights to this work.