Clojure名称绑定到REST JSON数据

Chr*_*ens 2 rest json clojure microservices

我是前端工程师,我们的团队正在将许多旧服务转换为用clojure编写的微服务.我看到的主要问题是,clojure命名约定更喜欢连字符,而不是变量名中的单词.这意味着如果您将变量直接映射到JSON,则任何JS使用者都需要使用括号表示法来访问此数据,例如response ['to-separate-words'].这显然不太理想.我认为这将是一个简单的查找最佳实践,但我一直在寻找一个小时,似乎我阅读的所有文档都避免了这个问题,但使用单个单词.还有其他人处理过此事.

Pio*_*dyl 9

您可以使用支持大多数组合的camel-snake-kebab库.您可以将其插入到Clojure的大多数JSON库中(cheshire,cli-json,data.json - 如Elogent所述),因为它们通常可以选择提供处理属性名称修改的函数.

例如用柴郡:

使用驼峰大小写属性名称生成JSON:

(cheshire.core/generate-string {:my-clojure-key "abc"} 
                               {:key-fn camel-snake-kebab.core/->camelCaseString})
Run Code Online (Sandbox Code Playgroud)

结果:

{"myClojureKey":"abc"}
Run Code Online (Sandbox Code Playgroud)

解析JSON以获取烤肉串案例键的地图:

(cheshire.core/parse-string "{\"myClojureKey\":\"abc\"}" 
                            camel-snake-kebab.core/->kebab-case-keyword)
Run Code Online (Sandbox Code Playgroud)

结果:

{:my-clojure-key "abc"}
Run Code Online (Sandbox Code Playgroud)

camel-snake-kebab自述文件中还有一个data.json的例子.