Clojure 名称绑定到 REST JSON 数据

Clojure name binding to REST JSON data

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

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

例如柴郡:

生成 JSON 驼峰式 属性 姓名:

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

结果:

{"myClojureKey":"abc"}

解析 JSON 以获取带有 kebab 大小写键的地图:

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

结果:

{:my-clojure-key "abc"}

camel-snake-kebab readme 中也有一个 data.json 的例子。