I'm trying to use EDN to communicate between a simple Python server and an in browser app written using ClojureScript.
So the server needs to generate and return chunks of EDN format for the browser.
I've installed https://github.com/swaroopch/edn_format which seems to be a recommended EDN library for Python.
But I want to be able to generate a map that uses Clojure symbols for keys. Eg. {:a 1 :b 2}
However, if I create a Python dictionary {"a":1, "b":2}
and pass it to the dumps function, the final EDN keeps the keys as strings, not symbols.
Obviously there are no :symbols
in Python. But is there a way to convince edn_format.dumps to turn dictionary string-keys into them? Or is there a better edn library for Python that can do this?
You can use the keyword_keys
argument:
edn_format.dumps({'a': 1}, keyword_keys=True)
# => {:a 1}
Or the Keyword
constructor:
edn_format.dumps({edn_format.Keyword('a'): 1})
# => {:a 1}