EDN is to Clojure as JSON is to JS.
Shame it hasn't similarly transcended its home language because it has a killer feature: https://github.com/edn-format/edn#tagged-elements
Shame it hasn't similarly transcended its home language because it has a killer feature: https://github.com/edn-format/edn#tagged-elements
Transit is a much better choice here, but even that tends to be a bit non-idiomatic in languages like Python. That's not really the fault of Transit though, languages are just too different to have a single communication protocol work flawlessly between them all.