使用 :symbols 从 Python 生成 Clojure EDN
Generating Clojure EDN from Python with :symbols
我正在尝试使用 EDN 在简单的 Python 服务器和使用 ClojureScript 编写的浏览器应用程序之间进行通信。
因此服务器需要为浏览器生成 return 块 EDN 格式。
我已经安装了 https://github.com/swaroopch/edn_format,这似乎是 Python 推荐的 EDN 库。
但我希望能够生成一个使用 Clojure 符号作为键的映射。例如。 {:a 1 :b 2}
但是,如果我创建一个 Python 字典 {"a":1, "b":2}
并将其传递给 dumps 函数,最终的 EDN 会将键保留为字符串,而不是符号。
显然Python中没有:symbols
。但是有没有办法说服 edn_format.dumps 将字典字符串键变成它们呢?或者是否有更好的 Python edn 库可以做到这一点?
您可以使用 keyword_keys
参数:
edn_format.dumps({'a': 1}, keyword_keys=True)
# => {:a 1}
或Keyword
构造函数:
edn_format.dumps({edn_format.Keyword('a'): 1})
# => {:a 1}
我正在尝试使用 EDN 在简单的 Python 服务器和使用 ClojureScript 编写的浏览器应用程序之间进行通信。
因此服务器需要为浏览器生成 return 块 EDN 格式。
我已经安装了 https://github.com/swaroopch/edn_format,这似乎是 Python 推荐的 EDN 库。
但我希望能够生成一个使用 Clojure 符号作为键的映射。例如。 {:a 1 :b 2}
但是,如果我创建一个 Python 字典 {"a":1, "b":2}
并将其传递给 dumps 函数,最终的 EDN 会将键保留为字符串,而不是符号。
显然Python中没有:symbols
。但是有没有办法说服 edn_format.dumps 将字典字符串键变成它们呢?或者是否有更好的 Python edn 库可以做到这一点?
您可以使用 keyword_keys
参数:
edn_format.dumps({'a': 1}, keyword_keys=True)
# => {:a 1}
或Keyword
构造函数:
edn_format.dumps({edn_format.Keyword('a'): 1})
# => {:a 1}